我正在尝试学习dll注入的基础知识,因此我创建了一个非常简单的hello-world类型DLL和基于我在网上找到的代码的注入器。我无法找到任何开箱即用的东西,所以我不得不做一些调整。
我在64位窗口上运行它们。我正在使用Visual Studio 2010进行编译。注入器是一个win32控制台应用程序,而dll也是win32。我正在尝试将我的代码注入现有的记事本进程(也是32位)。所有这些都在Windows 7 x64上运行。
当我运行注射器时,它每次都在CreateRemoteThread
失败,GetLastError
返回5(即ERROR_ACCESS_DENIED
)。我已经确认dll路径是正确的(尽管将其更改为虚假路径会产生相同的行为),并且我已经确认路径是使用Cheat Engine在正确的地址写入记事本的内存。我遇到了困难,因为我不确定如何进一步调试问题。
什么可能导致CreateRemoteThread失败?
答案 0 :(得分:3)
问题是notepad.exe在64位窗口中是一个64位进程,我试图注入一个32位进程。
答案 1 :(得分:0)
我也提出了同样的问题。我的情况是这样的:
我的系统是64位,记事本也是64位。
但是注入器是32位进程。
我的解决方案是将64位记事本替换为系统目录中的32位记事本。