var
pBuffer:Pointer;
dwSize:DWORD;
begin
dwSize:=100;//想要读取的长度
pBuffer:=VirtualAlloc(nil,dwSize,MEM_COMMIT,PAGE_READWRITE);
if pBuffer=nil then exit;
ReadOrWritePhyMem(TRUE,$789340,dwSize,pBuffer);
VirtualFree(pBuffer,dwSize,MEM_DECOMMIT);
end;
刚开始没有仔细看他的代码,后来复制了慢慢调了一下,现在可以正确读取了。
var
Addr:integer;
buf:array [0..4096] of byte;
begin
Addr:=strtoint('$'+Edit1.Text);
buf[4096]:=0;
Memo1.Text:='';
if ReadOrWritePhyMem(True,Addr,4096,@buf) then
Memo1.Text:=PChar(@buf[Addr mod 4096]);
end;
还有,要在他的代码里搜索Inc(DWORD(VirtualAddress),Access mod $1000);这一行,把他删了。