C++注射问题

C++ injection problems

本文关键字:问题 C++      更新时间:2023-10-16

我有一些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
    

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

  2. 第 92 行。

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

如果我手动将 dwSize 设置为 224,我会得到"无法创建远程线程!我对 dwSize 的值有误吗?还是别的什么?

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

  1. 使 iCodeEnd 和 iCode 都是静态的,使编译器将函数放在内存中一个接一个。这会将 dwSize 修复为恰到好处。
  2. 在 win7 上,从 \windows\system32 文件夹(如记事本)注入进程失败,并显示"访问被拒绝"错误(即使禁用了 UAC)。