Я пытаюсь прочитать float
в процессе (игре).
Заглянув в 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.
Спасибо