EasyHook 的 RhInjectLibrary 函数为什么会在进程创建后导致目标进程崩溃

问题描述

我有一个程序可以检测进程创建并注入我的 Windows API 函数挂钩 dll。

我使用 PsSetCreateProcessnotifyRoutine 内核函数在微过滤器驱动程序中创建新进程时获取通知回调。在那个回调中,我向我的用户程序发送消息,在收到消息后我立即回复它让目标进程进行初始化和其他事情。回复后,我的用户态程序只是使用WaitForInputIdle函数等待目标进程空闲,这样我就希望可以安全地调用EasyhookRhInjectLibrary 注入我的挂钩 dll。但即使该功能在大多数情况下都能成功运行,有时也会失败并出现以下错误

STATUS_INTERNAL_ERROR:注入的汇编代码中出现未知错误

目标进程也崩溃了,0xC0000005 错误是访问冲突。

当我尝试将 Sleep 放在 WaitForInputIdle 之后进行测试时,它运行良好。我知道这不是正确的做法。我相信这个过程还没有准备好被注入。用notepad.exe、winword.exe 和 explorer.exe 测试了程序。 目前我只在 explorer.exe 上看到过这个错误。另外,对于notepad.exe函数,很少出现如下错误,但也不是问题,因为dll注入成功。

c++ 例程完成例程成功但未引发事件

将 dll 注入“未挂起的进程”是否安全?还是其他原因导致错误?如果我的问题不够清楚,我可以写一个代码

感谢您的任何建议。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)