大侠一个关于内存读取的有关问题
请教各位大侠一个关于内存读取的问题
我知道了一个另一个进程的地址,想把里面的数据给读出来,该怎么操作,应该是用到ReadProcessMemory,能否提供一段代码,比如读取0258DFC里面的浮点数据。
试过网络上很多的代码,但是运行老出问题。
万分感谢!
------解决方案--------------------
看你贴的图,要取浮点数,你又按字符串来读,真是乱七八糟的啊
就你的图上所示,假设要读取这个2355.20浮点数
我知道了一个另一个进程的地址,想把里面的数据给读出来,该怎么操作,应该是用到ReadProcessMemory,能否提供一段代码,比如读取0258DFC里面的浮点数据。
试过网络上很多的代码,但是运行老出问题。
万分感谢!
------解决方案--------------------
看你贴的图,要取浮点数,你又按字符串来读,真是乱七八糟的啊
就你的图上所示,假设要读取这个2355.20浮点数
var
hwnd:cardinal;
pid:Dword;
hProcess:cardinal;
x:Pointer; // <---- 声明为通用指针Pointer类型
Num: cardinal;
begin
GetMem(x, 4); // <---- 分配内存,按single浮点类型的4字节来申请
ZeroMemory(x, 4); // <---- 清零该内存区域
hwnd := FindWindow(nil, '游戏');
GetWindowThreadProcessId (hwnd, @pid);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
If hProcess <> 0 Then
begin
if ReadProcessMemory(hprocess,Pointer($007DA780), x, 4, num) then // <---- 007DA780
label1.Caption := FormatFloat('0.00', PSingle(x)^) // <---- 读取到的数据转为字符串
else
showmessage('读数失败~!');
end
else
showmessage('未启动程序');
CloseHandle(hProcess);
FreeMem(x); // <---- 释放内存
end;