再问一个问题,,,,不算太难,,,也不算太简单的~~
taoyi 2005-05-26 03:17:03 问题是这样的,我需要在目标进程中做一些操作,于是我向目标进程安装一个消息钩子将DLL注入目标进程,然后再将目标进程窗口的窗口函数地址修改为我的窗口函数地址,代码类似如下:
void SetHook()
{
g_hHook = SetWindowsHookEx(...); // 安装钩子注入代码
g_oldWndProc = SetWindowLong(.....,(LONG)MyProc); //修改目标窗口函数地址
}
LRESULT CALLBACK MyProc(......)
{
}
void UnHook()
{
if (g_oldWndProc != NULL)
SetWindowLong(.....,(LONG)g_oldWndProc);
if (g_hHook != NULL)
UnhookWindowsHookEx(g_hHook);
}
实际编写过程中发现已经成功完成想要执行的操作,但是问题出在卸载钩子的时候目标程序就异常退出了,而且总是这样异常退出,这是为什么呢??
在UnHook()过程中我是应该先卸载掉钩子还是先还原目标进程窗口函数????