错误0xc000007b尝试注入弯路时的DLL

时间:2013-10-07 08:38:29

标签: windows code-injection 32-bit detours

我正在尝试使用最新的32位Detours库将DLL注入新进程。

http://research.microsoft.com/en-us/projects/detours/

过去它对我有用,但在DLL更改后,它停止了所有进程的工作。当我恢复这个过程时,我会看到一个消息框

  

应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。

我用一个普通的空注入DLL重新创建了它,除了kernel32.dll之外没有依赖项。使用其他可执行文件,它可以很好地工作。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

原来,问题是我使用Detours注入的DLL确实有任何导出。一旦我添加了虚拟导出,一切都运行良好。

答案 1 :(得分:0)

我不知道您遇到这个问题时的文档是什么样子,但是基于显然可以解决问题的伪导出和当前文档,您可能错过了Detouring 32-bit and 64-bit Processes中所述的一些要求。不幸的是,它说做事时并没有说明这些部分如何组合在一起。

Detours希望您的助手DLL以序号1导出DetourFinishHelperProcess。这不是您自己定义的函数。如Using Detours示例中所示,由于在DetourIsHelperProcess函数中调用DllMain的结果,它将被编译到DLL中。