InternetOpenUrlA hook crasht
-
Hey,
folgender versuch einen Hook auf InternetOpenUrlA zu setzen schlägt leider fehl.
Die Zielapplikation crasht bei dem aufruf von InternetOpenUrlA.#include <windows.h> #include <WinInet.h> typedef HINTERNET (__stdcall *tInternetOpenUrlA)(HINTERNET hInternet, LPCTSTR lpszUrl,LPCTSTR lpszHeaders,DWORD dwHeadersLength,DWORD dwFlags,DWORD_PTR dwContext); tInternetOpenUrlA pInternetOpenUrlA; void* DetourFunc(BYTE *src, const BYTE *dst, const int len) { BYTE *jmp = (BYTE*)malloc(len+5); DWORD dwback; VirtualProtect(src, len, PAGE_READWRITE, &dwback); memcpy(jmp, src, len); jmp += len; jmp[0] = 0xE9; *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5; src[0] = 0xE9; *(DWORD*)(src+1) = (DWORD)(dst - src) - 5; VirtualProtect(src, len, dwback, &dwback); return (jmp-len); } HINTERNET __stdcall hooked_InternetOpenUrlA(HINTERNET hInternet, LPCTSTR lpszUrl,LPCTSTR lpszHeaders,DWORD dwHeadersLength,DWORD dwFlags,DWORD_PTR dwContext) { return pInternetOpenUrlA(hInternet, lpszUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext); } void Hook() { FARPROC dwInetOpenUrlA = GetProcAddress(GetModuleHandle("Wininet.dll"), "InternetOpenUrlA"); pInternetOpenUrlA = (tInternetOpenUrlA)DetourFunc((BYTE*)dwInetOpenUrlA, (BYTE*)&hooked_InternetOpenUrlA, 5); } BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpvReserved) { if (dwReason == DLL_PROCESS_ATTACH) { CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hook, 0, 0, 0); } return TRUE; }Hat jemand einen Rat, was daran falsch ist?
Vielen Dank!
-
es könnte ein fastcall sein, dann passen die Parameter nicht oder (wahrscheinlich) stimmt die size = 5 beim Hooken nicht
greetz KN4CK3R
-
Empfiehlt: MS Detours 2.1
-
dank euch, jungs!
lag an der size - 7bytes wärens gewesen.
lg