关于API HOOK的一个问题,灌水者免入
我想拦截系统的MessageBox函数。
我写了一个测试程序,发现只能HOOK 自己程序,不能HOOK其它进程的MessageBox的调用。
我的测试程序流程如下:
利用GetProcess获得系统user32.dll中MessageBox的地址,
修改它的前8个字节为jmp MyMessageBox。
INT WINAPI MyMessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)
{
做我HOOK时需要的事情
恢复系统MessageBox函数的前8个字节
bret=调用MessageBox函数
再次修改系统MessageBox使其跳到MyMessageBox
return bret;
}
我的疑问是,user32.dll在内存中应该只有一份拷贝(DLL的特性),那么我的测试程序对系统MessageBox函数的修改应该会影响其它进程才是,为什么对其它进程没有影响呢?
另外,如果有好的可以全局拦截MessageBox的方法,也可以告诉我。
谢谢