DLL只包含DLL_PROCESS_ATTACH中的代码从可执行依赖项中丢失?

时间:2017-03-02 21:43:38

标签: c++ winapi visual-c++ dll dll-injection

我有一个基于DLL注入的项目,我希望在本地进行测试。在目标环境中,DLL通过AppInit_DLLs加载,这意味着它在第一次执行进程时加载user32.dll的时间大致相同。所有这些都有效,DLL创建了一个证明成功的日志文件。

我现在希望在受控环境中测试DLL的行为,特别是在我在Visual Studio 2015中创建的测试win32程序的上下文中。我从中获取了生成的lib文件DLL项目并将其添加为项目设置下的附加依赖项 - >链接器 - >输入,将包含该lib文件的目录添加到VC ++目录 - >库目录并将DLL文件与生成的可执行文件放在一起。但是,当我运行可执行文件时,我看不到我的日志文件。

我决定使用依赖性walker进一步调查,我没有看到任何提及我的DLL,所以看起来似乎从未添加依赖。

其他一些信息:

  • 两者都是使用相同的目标架构构建的
  • win32测试应用程序是使用/ MDd(多线程调试DLL)构建的
  • 测试应用程序不使用DLL中的任何导出函数,因为我试图测试的是DLL_PROCESS_ATTACH中执行的代码做了正确的事情

我可以使用单独的注入过程来测试在远程测试过程中创建线程,但是我希望在流程执行的早期复制正在加载的DLL的行为,因此这种替代方案并不理想。 / p>

非常感谢任何帮助。谢谢: - )

1 个答案:

答案 0 :(得分:0)

RbMm的回答是正确的。问题是DLL没有被链接,因为它没有被使用。添加导出的方法并在测试程序中调用它就可以了。