gpt4 book ai didi

c++ - 注入(inject) DLL 时,Explorer.exe 在启动时死锁

转载 作者:可可西里 更新时间:2023-11-01 10:49:33 26 4
gpt4 key购买 nike

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

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

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

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

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

谢谢

最佳答案

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

关于c++ - 注入(inject) DLL 时,Explorer.exe 在启动时死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com