抓狂了,搞了一天没明白,为什么就是HOOK不到WM_CLOSE消息,这是为什么呢???
哪位朋友有经验的给个小例子或者给点指点哈!
要疯掉了!
主要想HOOK这个消息的原因是我HOOK了gettickcount这个函数,但是在程序结束时弹出错误信息,说是程序异常,我就慢慢摸索后发现,可能是因为程序结束时没有恢复gettickcount的原始API地址,所以只有HOOK下WM_CLOSE消息,使他结束前处理下!
下面是hook gettickcount的代码,真不知道为什么HOOK别的函数都没问题,只有HOOK了gettickcount后就会报异常!
/////////////////////////////////////////////////////////////
DWORD WINAPI my_GetTickCount()
{
DWORD dwProtect;
/*恢复GetTickCount()的前5个字节*/
VirtualProtectEx(hHandle, fpApiAddrsend,5, PAGE_READWRITE, &dwProtect);
WriteProcessMemory(hHandle, fpApiAddrsend, OldCodesend, 5, 0);
VirtualProtectEx(hHandle, fpApiAddrsend, 5, dwProtect, &dwProtect);
DWORD dwRet;
dwRet = ((PFN_GetTickCount)(PROC) g_GetTickCount)();
dwRet = DWORD(double(dwRet - g_dwFirstOfGetTickCountRet) * g_dMultiple);
/*改写GetTickCount()的前5个字节*/
VirtualProtectEx(hHandle, fpApiAddrsend, 5, PAGE_READWRITE,&dwProtect);
WriteProcessMemory(hHandle, fpApiAddrsend, NewCodesend, 5, 0);
VirtualProtectEx(hHandle, fpApiAddrsend, 5, dwProtect, &dwProtect);
return dwRet;
}
//////////////////////////////////////////////////////
高手指点下,是不是因为程序突然关闭,导致没有恢复GetTickCount()的前5个字节,而使程序报出异常错误呢?