读取内存文本代码:
procedure TForm1.Timer1Timer(Sender: TObject);
var
Window: HWND;
PHND: THandle;
PID: Integer;
shuju: Pointer;
iRead:Cardinal;
begin
GetMem(shuju,1024);
Window := findwindow('Ikm','form1');//此为窗口句炳
GetWindowThreadProcessId(Window, @PID);
PHND := OpenProcess(PROCESS_VM_READ, False, PID);
if PHND <> 0 then
begin
ReadProcessMemory(PHND,Pointer($05EA7028),shuju,1024,iRead);
edit1.text := pchar(shuju);
end;
end;
以上代码可读取: 05ea7028的内容.但是问题来了,如果 05ea7028 - 05ea7032 存放的是一串内容 如 F6 05 00 00我现在想把 05ea7028 - 05ea7032 中的内容转换为 05F60000(16进制) 这个地址请问如何操作?.谢谢高手指点了.
x:integer;
x:= PInteger( shuju )^;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Window: HWND;
PHND: THandle;
PID: Integer;
shuju: Pointer;
iRead:Cardinal;
I:integer;
begin
GetMem(shuju,1024);
Window := findwindow('Ikm','form1');//此为窗口句炳
GetWindowThreadProcessId(Window, @PID);
PHND := OpenProcess(PROCESS_VM_READ, False, PID);
if PHND <> 0 then
begin
ReadProcessMemory(PHND,Pointer($05EA7028),shuju,1024,iRead);
I := PInteger(shuju)^;
edit1.text := pchar(shuju);
end;
end;
Ptr: Pointer;
begin
Ptr := Pointer(PInteger(shuju)^);//??
end;