Hallo Leute,
ich hab versucht die MessageBoxA Funktion in user32.dll zu hooken, klappt an und für sich schon ganz gut. Ich hab ein Programm gefunden, dass alle 10 Sek. eine MessageBox aufmacht. Nun ist es so wenn ich meine DLL in das Programm injecte, wird die erste MessageBox mit meinen Text geändert, die nachfolgenden aber nicht mehr. Eventuell könnte mir jemand bei meinem kleinen Problem helfen.
Lg SiZeXtreme
ich hab versucht die MessageBoxA Funktion in user32.dll zu hooken, klappt an und für sich schon ganz gut. Ich hab ein Programm gefunden, dass alle 10 Sek. eine MessageBox aufmacht. Nun ist es so wenn ich meine DLL in das Programm injecte, wird die erste MessageBox mit meinen Text geändert, die nachfolgenden aber nicht mehr. Eventuell könnte mir jemand bei meinem kleinen Problem helfen.
Code:
#include <Windows.h>
#include <stdio.h>
#include "Hook.h"
int WINAPI hook_MessageBox(HWND hWnd, char* lpText, char* lpCaption, UINT uType);
DWORD MessageBoxaddr=0;
BYTE backupMS[6];
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:{
DisableThreadLibraryCalls(hModule);
MessageBoxaddr = HookFunction("user32.dll", "MessageBoxA", hook_MessageBox, backupMS);
return true;
}break;
case DLL_THREAD_ATTACH:break;
case DLL_THREAD_DETACH:break;
case DLL_PROCESS_DETACH:{
if (MessageBoxaddr) WriteProcessMemory((HANDLE) -1, (void*)MessageBoxaddr, backupMS, 6, 0);
}break;
}
return TRUE;
}
int WINAPI hook_MessageBox(HWND hWnd, char* lpText, char* lpCaption, UINT uType){
WriteProcessMemory((HANDLE)-1, (void*)MessageBoxaddr, backupMS, 6, 0);
return MessageBoxA(hWnd, "Hook is working!", "Info", uType);
}