如何解决EasyHook 的 RhInjectLibrary 函数为什么会在进程创建后导致目标进程崩溃
我有一个程序可以检测进程创建并注入我的 Windows API 函数挂钩 dll。
我使用 PsSetCreateProcessNotifyRoutine 内核函数在微过滤器驱动程序中创建新进程时获取通知回调。在那个回调中,我向我的用户程序发送消息,在收到消息后我立即回复它让目标进程进行初始化和其他事情。回复后,我的用户态程序只是使用WaitForInputIdle函数等待目标进程空闲,这样我就希望可以安全地调用Easyhook的RhInjectLibrary 注入我的挂钩 dll。但即使该功能在大多数情况下都能成功运行,有时也会失败并出现以下错误
STATUS_INTERNAL_ERROR:注入的汇编代码中出现未知错误。
目标进程也崩溃了,0xC0000005 错误是访问冲突。
当我尝试将 Sleep 放在 WaitForInputIdle 之后进行测试时,它运行良好。我知道这不是正确的做法。我相信这个过程还没有准备好被注入。用notepad.exe、winword.exe 和 explorer.exe 测试了程序。 目前我只在 explorer.exe 上看到过这个错误。另外,对于notepad.exe函数,很少出现如下错误,但也不是问题,因为dll注入成功。
c++ 例程完成例程成功但未引发事件
将 dll 注入“未挂起的进程”是否安全?还是其他原因导致错误?如果我的问题不够清楚,我可以写一个伪代码。
感谢您的任何建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。