2

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

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

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

我知道死锁是在 DLL 实际注入进程之前实现的。

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

谢谢

4

1 回答 1

0

您始终可以避免使用 DLL 并通过重新定位可执行文件的 .reloc 部分以进行注入来避免挂起目标进程。

于 2012-05-21T04:38:08.977 回答