每次用户loginWindows时(使用HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Runregistrypath),我都使用registry的“运行”键自动执行我的程序。
我的应用程序开始通过使用命令行DLL注入器注入一个DLL到explorer.exe进程。
效果应该是:每次用户login后(重启Windows之后) – 我的应用程序被执行,并且我的DLL被注入到explorer.exe
在某些情况下,它可以正常工作,但在less数情况下(时间问题,很less重现),注入器和explorer.exe进程都处于死锁状态,并且没有响应。
我不确定,但我相信这是因为注入器试图向进程注入一个DLL(并暂停它),而进程已经加载了一个不同的DLL(所以它被locking)。 这样,两个进程都被locking了==>死锁。
我知道死锁是在DLL被实际注入进程之前实现的。
有没有人有任何想法如何避免它? 也许在注入之前查询explorer.exe的状态? 也许等待探险者稳定下来? 如果是这样 – 我该怎么做?
谢谢
你总是可以避免使用一个DLL,并避免暂停目标进程,通过重定义注入的可执行文件的.reloc部分。