Probleme mit NtAllocateVirtualMemory

Cromon

Erfahrenes Mitglied
Hallo zusammen!

Ich versuche momentan mich in die Verwendung der ntdll.dll einzuarbeiten. Leider bin ich jetzt schon bei der ersten Funktion gescheitert, die ich testen wollte, nämlich NtAllocateVirtualMemory. Hier die Referenz von undocumented.ntinternals.net

http://undocumented.ntinternals.net...t/Virtual Memory/NtAllocateVirtualMemory.html

Ich habe auch nachgeschaut in meiner ntdll.lib und da kommt __imp__NtAllocateVirtualMemory@24 auch entsprechend vor (was mir ja auch der Linker bestätigt hat indem er keinen Fehler gemeldet hat für ein unaufgelöstes externes Symbol.

Die Definition sieht bei mir so aus:
Code:
#ifndef NTAPI
typedef WINAPI NTAPI;
#endif

typedef LONG NTSTATUS;
typedef LONG KPRIORITY;

#define NTSYSAPI __declspec(dllimport)

extern "C"
NTSYSAPI NTSTATUS NTAPI NtAllocateVirtualMemory(HANDLE, PVOID*, ULONG, PULONG, ULONG, ULONG);

Nun verwende ich die Funktion in einer Klasse:
Code:
DWORD CAsmInterface::AllocateMemory(DWORD dwSize)
{
	PVOID addr = (PVOID)0;
	NtAllocateVirtualMemory(m_hProcess, &addr, 0, (PULONG)&dwSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	std::cout << (DWORD)addr << std::endl;
	return (DWORD)addr;
}

Das Problem ist nun, dass die Applikation jedes Mal abstürzt wenn NtAllocateVirtualMemory verwendet wird. Kann sich jemand von euch einen Reim darauf machen?

Der Debugger hat gesagt, dass die nächste auszuführende Aktion std::cout << (DWORD)addr << std::endl; wäre.

Gruss
Cromon
 
Problem erkannt, Problem gebannt. Habe die ntdll.lib aus Matlab gelinkt weil ich meine Installation des DDK nicht gefunden habe. Nachdem ich die dann gefunden habe und die ntdll.lib von da verwendet habe hat alles gut geklappt.
 
Zurück