我正在尝试使用最新的32位Detours库将DLL注入新进程。
http://research.microsoft.com/en-us/projects/detours/
过去它对我有用,但在DLL更改后,它停止了所有进程的工作。当我恢复这个过程时,我会看到一个消息框
应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。
我用一个普通的空注入DLL重新创建了它,除了kernel32.dll之外没有依赖项。使用其他可执行文件,它可以很好地工作。
知道为什么会这样吗?
答案 0 :(得分:4)
原来,问题是我使用Detours注入的DLL确实有任何导出。一旦我添加了虚拟导出,一切都运行良好。
答案 1 :(得分:0)
我不知道您遇到这个问题时的文档是什么样子,但是基于显然可以解决问题的伪导出和当前文档,您可能错过了Detouring 32-bit and 64-bit Processes中所述的一些要求。不幸的是,它说做事时并没有说明这些部分如何组合在一起。
Detours希望您的助手DLL以序号1导出DetourFinishHelperProcess
。这不是您自己定义的函数。如Using Detours示例中所示,由于在DetourIsHelperProcess
函数中调用DllMain
的结果,它将被编译到DLL中。