读取内存文本代码:
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进制) 这个地址请问如何操作?.谢谢高手指点了.

解决方案 »

  1.   

    var 
    x:integer;
    x:= PInteger( shuju )^;
      

  2.   


    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;
      

  3.   

    var
      Ptr: Pointer;
    begin
      Ptr := Pointer(PInteger(shuju)^);//??
    end;