我想在某个进程内查找内存数组为($c3,$8B,$44,$24,$04,$8b,$40,$04,$85,$c0,$75);
我的代码是这样写的。 procedure TForm_main.sButton3Click(Sender: TObject);
var
test1:array[0..10] of byte;
i,j:integer;
ret:cardinal;
ceshi:string;
Begin
ceshi:=''; for i:=$500000 to $5FFFFF do //读$500000-600000地址内存
begin
ReadProcessMemory(GetCurrentProcess,pointer(i),@test1,10,ret);
for j:=0 to 10 do
begin
ceshi:=ceshi+inttohex((test[j]),2); //把长度为10的数组赋给ceshi
end;
if ceshi='C38B4424048B400485C075' then begin
memo_gameinfo.Lines.Add(inttohex(i,4));
end;
end;
end; 这样老是不对。而且查询起来非常慢。我想请教下。有没有什么其它方法。还有我的共码哪里有问题。
我的代码是这样写的。 procedure TForm_main.sButton3Click(Sender: TObject);
var
test1:array[0..10] of byte;
i,j:integer;
ret:cardinal;
ceshi:string;
Begin
ceshi:=''; for i:=$500000 to $5FFFFF do //读$500000-600000地址内存
begin
ReadProcessMemory(GetCurrentProcess,pointer(i),@test1,10,ret);
for j:=0 to 10 do
begin
ceshi:=ceshi+inttohex((test[j]),2); //把长度为10的数组赋给ceshi
end;
if ceshi='C38B4424048B400485C075' then begin
memo_gameinfo.Lines.Add(inttohex(i,4));
end;
end;
end; 这样老是不对。而且查询起来非常慢。我想请教下。有没有什么其它方法。还有我的共码哪里有问题。
ReadProcessMemory(GetCurrentProcess,pointer(i),@test1,10,ret); var
i:Pinteger;
i^:=$500000;其次接收buffer 为什么不用PCHAR 直接strpas得到string
test1:array[1..10] of byte;
i,j:integer;
ret:cardinal;
ceshi:string;
Begin
ReadProcessMemory(GetCurrentProcess,pointer($58110F),@test1,9,ret);
for j:=1 to 9 do
begin
ceshi:=ceshi+inttohex((test1[j]),2);
end;
memo_gameinfo.Lines.Add(ceshi);这个读出来的数据是C38B4424048B400485C075.但是我用上面的代码就不行了。
这个应该怎么写。array[0..10] of pchar?
ceshi:string[10];
Begin
ReadProcessMemory(GetCurrentProcess,pointer($58110F),@aaa,10,ret);
ceshi:= strpas(@aaa);
memo_gameinfo.Lines.Add(ceshi);我这样写得到的是乱码。请指教。
aaa:Pchar; new(aaa) ReadProcessMemory(GetCurrentProcess,pointer($58110F),aaa,10,ret);
i,j:integer;
ret:cardinal;
ceshi:string[10];
Begin
new(aaa);
ReadProcessMemory(GetCurrentProcess,pointer($58110F),aaa,10,ret);
//ceshi:= strpas(@aaa);
memo_gameinfo.Lines.Add(strpas(aaa));
P:Pchar;
s:PInteger;
RET:Cardinal;
t:integer;
begin
New(P);
New(S);
for t:= $500000 to $5FFFFF do//读$500000-600000地址内存
begin
s^:=t;
ReadProcessMemory(GetCurrentProcess,S,P,10,ret);
ShowMessage(StrPas(p));
END;我正常着啊