寻找另一个程序内存中的变量

时间:2011-02-21 12:14:04

标签: c#

我正在尝试在另一个程序的内存中找到int值(我自己的小c++只保存该变量)。值 1234 ,但我似乎无法找到它。

这就是我正在做的事情:

for (uint adr = 0x00000000; adr <= 0x7FFFFFFF; adr += 1)
{
    // we want status...
    uint progress = (adr*100) / 0x7FFFFFFF;
    Console.WriteLine("Progress: {0} %", progress);

    // look for the int
    IntPtr bytes;
    byte[] buffer = new byte[4];

    ReadProcessMemory(process, adr, buffer, 4, out bytes);

    if (BitConverter.ToInt32(buffer, 0) == 1234)
    {
        // we found it...
    }
}

有几个错误:

  1. 进展无效。
  2. 我从来没有被发现。
  3. 由于

2 个答案:

答案 0 :(得分:2)

  1. 也许保存此值1234 2字节值不是4字节。
  2. 检查readprocess内存不会因为你没有OpenProcess而错误地抛出错误。
  3. 尝试大端读取,然后在读取之前尝试反向位。

答案 1 :(得分:0)

您可以将程序中的结果与某些高级内存扫描程序的输出进行比较,例如cheatengine