Код (Text): int RealMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { DWORD dwBytes; WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq, &OldZwq, sizeof(OldCode), &dwBytes); int r = MessageBoxA(hWnd,lpText,lpCaption,uType); WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq, &JmpZwq, sizeof(far_jmp), &dwBytes); return r; } int NewMessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) { return RealMessageBoxA(hWnd,lpText,lpCaption,uType);; } void SetHook(void) { DWORD dwBytes; PtrZwq = GetProcAddress(GetModuleHandleA("user32"), "MessageBoxA"); ReadProcessMemory(INVALID_HANDLE_VALUE, PtrZwq, &OldZwq, sizeof(OldCode), &dwBytes); JmpZwq.PuhsOp = 0x68; JmpZwq.PushArg = (PROC)&NewMessageBoxA; JmpZwq.RetOp = 0xC3; WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq, &JmpZwq, sizeof(far_jmp), &dwBytes); } После вызова Код (Text): LoadLibraryA("ing.dll"); Sleep(1000); MessageBoxA(0,"!!!","!!",0); Происходит падение программы
Извиняюсь забыл сказать SetHook при загрузке DLL вызываеться, и еще мне надо именно решение на Си(иначе и вопроса бы не было )
Всё заработало, но я просто дописал WINAPI в определении ф/ии, а какие еще есть макросы(чтоли), а то ведь моя задача не сводилась к перехвату Месагов