【发布时间】:2013-08-28 04:35:43
【问题描述】:
我正在尝试在进程(游戏)中读取float。
查看作弊引擎我可以找到我需要的地址,但它位于wow64cpu.dll + 4720,偏移量为 34。
因此,我尝试在该过程中找到 wow64cpu.dll 的基地址,但这就是我感到困惑的地方。
我现在不明白如何使用这个地址,因为我所有的尝试似乎都失败了。
Process[] processes = Process.GetProcessesByName("Napoleon");
Process process = processes[0];
ProcessModuleCollection modules = process.Modules;
ProcessModule dllBaseAdress = null;
foreach (ProcessModule i in modules)
{
if (i.ModuleName == "wow64cpu.dll")
{
dllBaseAdress = i;
break;
}
}
IntPtr dllPtr = dllBaseAdress.BaseAddress;
int pointer = dllPtr.ToInt32() + 0x4720;
int offset = 34;
IntPtr hProc = OpenProcess(ProcessAccessFlags.All, false, process.Id);
int bytesRead;
byte[] buffer = new byte[4];
ReadProcessMemory(hProc, new IntPtr(pointer + offset), buffer, 4, out bytesRead);
float lightColourScale = BitConverter.ToSingle(buffer, 0);
我的问题是我在使用 DLL 的基地址时哪里出错了,或者可能在其他地方,我不确定如何使用它来查找我的地址?
我还在 x64 中编译了该程序,否则它将找不到 wow64cpu.dll。
谢谢
【问题讨论】:
-
投反对票,不评论为什么。太棒了,谢谢。
-
魔兽世界机器人摧毁了游戏......
标签: c# winforms memory dll readprocessmemory