大侠一个关于内存读取的有关问题

请教各位大侠一个关于内存读取的问题
本帖最后由 u011354184 于 2013-09-08 21:23:02 编辑
我知道了一个另一个进程的地址,想把里面的数据给读出来,该怎么操作,应该是用到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;