讨论一个注入hook完成后的清理问题
问题描述:
采用全局钩子的方式将dll注入了目标进程,并成功hook了目标进程里的函数Fun。使其调用时会先进入我的函数Fun_My。这些都没有问题。但是在我要卸载钩子的时候,如果刚好代码执行在我的函数Fun_My的代码里。就会崩溃。因为我已经卸载了dll,也就是dll已经不在目标进程里了。这时候Fun_My也是无效的内容了,并不是以前的正确的代码段。所以目标进程就崩溃了。
这种情况下,在我的dll执行detach即将卸载的时候,如何确保代码并不在Fun_My里面执行呢。
当然我肯定是提前执行了对函数的unhook的,只是最后的一次hook到的函数,可能还在Fun_My里面执行,还没有执行完返回。这就出了问题。
大家有遇到过么,或是思考过这个问题,有啥好的处理方法啊,关于技术的意见建议讨论都欢迎。感谢。