我有一个简单的dll,正在使用MS绕道注入目标进程。执行注入的过程是C#.net application。
DLL和detours库都已静态链接(/ MT选项)。
然而,当我尝试将dll注入客户端计算机上的目标程序时,我收到错误“msvcr100.dll”缺少“错误。现在我打开dll w / depends并且有不依赖于“msvcr100.dll”。
即使更奇怪这个问题只发生在客户端是vista x64或windows 7 x64时。 dll成功注入到windows xp x32和windows 7 x32系统上。
有关visual studio中哪些错误表明对未使用库的依赖性的任何想法?
编辑时: 看起来其他人有同样的问题......从未解决过。 Compiled .dll files requiring msvcr100.dll to load
对于在客户端机器上安装Visual Studio 2010 C ++可再发行组件的记录“解决”了这个问题,但是我希望通过静态链接来避免这种依赖。
答案 0 :(得分:1)
你可以弄清楚我的附加(预注入)cdb调试器在加载msvcr100.dll
的机器上的进程(安装了DLL)的情况。使用
sxe ld:msvcr100
命令在加载DLL时断开(我不是100%确定这是否是完全正确的语法)。加载后,您可以通过查看调用堆栈来找出原因。如果没有,请尝试在该模块中的所有内容上设置断点:
bm msvcr100!*
看看谁在调用它。这应该会让你非常清楚它为什么会被加载。
答案 1 :(得分:1)
所以我从来没有确切地发现问题是什么,但是在预感到我试图在另一台Windows 7机器上运行应用程序(完全相同的构建w / mscvr100.dll错误)并且它工作正常。
我在“问题”机器上重新安装了Windows 7,同样的构建工作正常,没有错误。在我的谷歌搜索中,我在卸载Visual Studio后遇到了另一个有此问题的人的报告。我知道Visual Studio一次安装在“问题”的Windows 7机器上并且当前已卸载。
如果其他人遇到这种情况,我建议尝试在从未安装过visual studio的机器上运行二进制文件。如果它没有问题,那么可能存在与VS卸载相关的一些问题。