另一个程序加载dll并SetHookdll代码#include <windows.h>extern"C"
{
 
HANDLE h;
HHOOK hhk;LRESULT __stdcall hproc(int code,WPARAM wParam,LPARAM lParam)
{
return CallNextHookEx(hhk,code,wParam,lParam);
}__declspec(dllexport) void __stdcall SetHook()
{
hhk = SetWindowsHookEx(WH_GETMESSAGE,hproc, (HINSTANCE)h,0 );
}__declspec(dllexport) void __stdcall HookP(int p)
{
//接管API
char *str = (char*) (*( (&p) + 4));//TextOutA 第4个参数 
*str = 'A'; 

}BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
 ){    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
h = hModule;
//hook TextOutA
void *pp =(void *) GetProcAddress( GetModuleHandle("gdi32.dll"),"TextOutA" );

DWORD oldp;
VirtualProtect(pp,200,PAGE_EXECUTE_READWRITE ,&oldp);

int  a = (int) GetProcAddress( (HINSTANCE) hModule,"Hookp" ) 
-(int) pp - 5;

__int64 w= *((__int64* )pp) ;

*( (char*)pp  ) = (char)0xe8;  //call
*  (  (int*)((char*)pp+1)  ) = a;
*  (  (__int64*)((char*)pp+5)  ) = w; VirtualProtect(pp,200,oldp ,&oldp);

    }
    return TRUE;
}}