我正在尝试float
在进程(游戏)中读取 a 。
在 Cheat Engine 中查找我需要的地址,但它位于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。
谢谢