0

我遇到了一些 C++ 注入困难。我正在使用 Win 7 x64,VS 2010

这是我尝试运行的完整代码:http: //pastebin.com/avKS3r22

我的问题:

  1. 第 62 行。

    dwSize = (DWORD)iCodeEnd - (DWORD)iCode; //subtract the function from the limiter to obtain the function's size
    

    如果 iCodeEnd 是 0x01151570 并且 iCode 是 0x01151490,为什么 dwSize 应该是 224 或 0xE0 时等于 4294966986(我认为这是 DWORD 的最大值)?是否需要为我的项目设置任何特定属性(我创建了一个没有 Unicode 的空 win32 项目)?

  2. 第 92 行。

    if(!(hRemoteThread = CreateRemoteThread(hProcess, NULL, 0, HREAD_START_ROUTINE)lpAddr, prmAddr, 0, NULL)))
    

如果我手动将 dwSize 设置为 224,我会收到“无法创建远程线程!”。我对 dwSize 的值有误吗?或者是别的什么?

请注意:这是我的第一个 C++ 应用程序(请提供更详细的答案)。代码不是我的,我只是重写它以学习基础知识。原始版本在我的平台下运行良好。

4

1 回答 1

0
  1. 将 iCodeEnd 和 iCode 都设为静态会使编译器将函数一个接一个地放入内存中。这将 dwSize 修复为恰到好处。
  2. 在 win7 中,从 \windows\system32 文件夹(例如记事本)注入进程失败,并出现“拒绝访问”错误(即使禁用了 UAC)。
于 2012-10-08T12:07:54.043 回答