// setup o gancho
VERIFIC (CFuncInAPIHook:: Citar como exemplo () .HookFunction (_T (“user32.dll”), _T (“MessageBoxW”), AfxGetInstanceHandle (), &MyMessageBox (PROC)));
Procedimento da recolocação de //
int WINAPI MyMessageBox (hWnd de HWND,
lpText de LPCTSTR,
lpCaption de LPCTSTR,
uType de UINT
)
{
O ponteiro da função de // deve ter mesma convenção de chamada que PROC (WINAPI)! , Prepend conseqüentemente WINAPI (__stdcall)!
typedef int (*MESSAGEBOX_FUNC) (HWND de WINAPI, LPCTSTR, LPCTSTR, UINT);
// recupera somente o endereço de função original uma vez!
pFunc de estática de MESSAGEBOX_FUNC = (MESSAGEBOX_FUNC) CFuncInAPIHook:: Citar como exemplo () .RetrieveOriginalAPIFunctionAddress (_T (“user32.dll”), _T (“MessageBoxW”));
AFIRMAR (pFunc);
retornar o pFunc? (*pFunc) (hWnd, _T (“eu enganchei esta chamada! "), lpCaption, uType): 0;
}
// esta chamada será enganchado
:: MessageBox (ZERO, _T (""), _T (“título”), MB_OK);
|