CreateRemoteThread 失败并显示 ERROR_ACCESS_DENIED
Posted
技术标签:
【中文标题】CreateRemoteThread 失败并显示 ERROR_ACCESS_DENIED【英文标题】:CreateRemoteThread failing with ERROR_ACCESS_DENIED 【发布时间】:2012-12-20 20:51:22 【问题描述】:我正在尝试学习 dll 注入的基础知识,因此我创建了一个非常简单的 hello-world 类型的 DLL 和一个基于我在网上找到的代码的注入器。我找不到任何开箱即用的东西,所以我不得不进行一些调整。
Injection Code, DLL Code
我在 64 位窗口上运行这些。我正在使用 Visual Studio 2010 进行编译。注入器是一个 win32 控制台应用程序,而 dll 也是 win32。我正在尝试将我的代码注入现有的记事本进程(也是 32 位)。所有这些都在 Windows 7 x64 上运行。
当我运行注入器时,它每次都在CreateRemoteThread
失败,GetLastError
返回 5(即ERROR_ACCESS_DENIED
)。我已经确认 dll 路径是正确的(尽管将其更改为虚假路径会产生相同的行为),并且我已经确认该路径正在使用 Cheat Engine 以正确的地址写入记事本的内存。我遇到了困难,因为我不确定如何进一步调试问题。
什么可能导致 CreateRemoteThread 失败?
【问题讨论】:
【参考方案1】:问题是notepad.exe是64位windows下的64位进程,我试图用32位进程注入。
【讨论】:
是的,我遇到了同样的问题。结果就像你说的,平台不匹配。为你 +1。【参考方案2】:我也遇到了同样的问题。我的情况是这样的:
我的系统是64位的,记事本也是64位的。
但是注入器是32位进程。
我的解决办法是把系统目录下的64位记事本换成32位记事本。
【讨论】:
虽然这在技术上是可行的,但这真的不应该是一个严肃的答案,哈哈。以上是关于CreateRemoteThread 失败并显示 ERROR_ACCESS_DENIED的主要内容,如果未能解决你的问题,请参考以下文章
远程线程注入 CreateRemoteThread 返回NULL
C++ - CreateRemoteThread DLL 注入 [Windows 7]