oh das glaub mir mal ;)
90% meiner crashes beim hooken kamen durch die falsche callingconvention und wie gesagt, bei NtQueryInformationProcess ist es mir heute auch passiert.
also ist es einen Versuch wert, es mal mit WINAPI zu probieren.
wo sollte der unterschied bei ner proxy dll sein? warum sollte es da nicht crashen?
hm aber NTAPI ist ja genau das gleiche wie WINAPI.... :/
Komisch nur, dass es einmal mit NtQueryInformationProcess ging und einmal nicht (letzteres mit NTAPI)
Bei NtQueryVirtualMemory ists beides das gleiche
hier übrigens mal mein source (wow den hab ich nicht geposted o.O)
edit: Es muss was mit dem Stack (/den Parametern) zutun haben....
Wenn ich die originale Funktion calle -> Crash
wenn ich MessageBox calle -> Crash
Wenn ich Sleep calle -> alles ok
edit:
EnumProcesses hat aber wiederum 3 Parameter und führt nicht zum Crash.
MessageBox oder die Originalfunktion aber schon.
Ich bin total verwirrt <.<
90% meiner crashes beim hooken kamen durch die falsche callingconvention und wie gesagt, bei NtQueryInformationProcess ist es mir heute auch passiert.
also ist es einen Versuch wert, es mal mit WINAPI zu probieren.
wo sollte der unterschied bei ner proxy dll sein? warum sollte es da nicht crashen?
hm aber NTAPI ist ja genau das gleiche wie WINAPI.... :/
Komisch nur, dass es einmal mit NtQueryInformationProcess ging und einmal nicht (letzteres mit NTAPI)
Bei NtQueryVirtualMemory ists beides das gleiche
hier übrigens mal mein source (wow den hab ich nicht geposted o.O)
Code:
typedef /*NTSYSCALLAPI*/ NTSTATUS (NTAPI *NtQueryType)(HANDLE,PVOID,MEMORY_INFORMATION_CLASS,PVOID,ULONG,PULONG); NtQueryType NtQueryVirtualMemory_orig = NULL; NTSTATUS NTAPI NtQueryVirtualMemoryHook(HANDLE ProcHandle,PVOID Addr,MEMORY_INFORMATION_CLASS MemInfo,PVOID Buf,ULONG Len,PULONG ResLen) { return NtQueryVirtualMemory_orig(ProcHandle,Addr,MemInfo,Buf,Len,ResLen); } BOOL APIENTRY DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved) { if(_Reason == DLL_PROCESS_ATTACH) { NtQueryVirtualMemory_orig = (NtQueryType)DetourFunction((PBYTE)NtQueryVirtualMemory,(PBYTE)NtQueryVirtualMemoryHook); } return TRUE; }
edit: Es muss was mit dem Stack (/den Parametern) zutun haben....
Wenn ich die originale Funktion calle -> Crash
wenn ich MessageBox calle -> Crash
Wenn ich Sleep calle -> alles ok
edit:
EnumProcesses hat aber wiederum 3 Parameter und führt nicht zum Crash.
MessageBox oder die Originalfunktion aber schon.
Ich bin total verwirrt <.<