注入DLL时,Explorer.exe在启动时死锁

时间:2012-04-22 16:36:24

标签: c++ windows winapi dll dll-injection

每次用户登录Windows时,我都会使用注册表“run”键自动执行我的程序(使用 HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run 注册表路径)。 /> 我的应用程序首先使用Command Line DLL-Injector将DLL注入explorer.exe进程。

效果应该是:每次用户登录后(重启Windows后) - 执行我的应用程序,并将我的DLL注入explorer.exe

在某些情况下它可以正常工作,但在极少数情况下(时间很少,很少再现),进样器和explorer.exe进程都会死锁并且没有响应。
我不确定,但我相信这是因为注入器试图将DLL注入进程(并在执行此操作时暂停它),而进程已经加载了不同的DLL(因此它被锁定)。这样两个进程都被锁定==>死锁。

我知道在DLL实际注入进程之前就已经实现了死锁。

有谁知道如何避免它?也许在注入explorer.exe之前查询它的状态?也许等待探险家稳定下来?如果是这样 - 我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

您始终可以避免使用DLL,并通过重新定义可执行文件的.reloc部分来进行注入,从而避免暂停目标进程。