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:
Nun verwende ich die Funktion in einer Klasse:
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
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