unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
lbl1: TLabel;
lbl2: TLabel;
tmr1: TTimer;
lbl3: TLabel;
procedure FormCreate(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
WndHndl:THandle;
PID,hProcess,BytesCount

word;
i,MobID

word;
id

WORD;
mobname:PWChar;
nob

WORD;
realmobname:string;
const
BA=$00C38B6C;
GA=$00C392CC;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Tmr1.Enabled := True;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
var b1,b2,b3,b4,b5,adress:integer;
begin
begin
WndHndl:=findwindow(nil, PChar('Perfect World')); //èùåì îêíî ïâ
GetWindowThreadProcessId(WndHndl,@PID); //ïîëó÷àåì èä îêíà
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,PID ); //îòêðûâàåì ïðîöåññ äëÿ ÷òåíèÿ
//ïåðåáîð ìîáîâ
if (hProcess<>0)then //ïðîâåðêà ÷òî ïðîöåññ íàéäåí
begin
//äîëó÷àåì èä òàðãåòà
ReadProcessMemory (hProcess, Pointer(GA), @ID, sizeof(ID), NoB);
ReadProcessMemory (hProcess, Pointer(ID+$34), @ID, sizeof(ID), NoB);
ReadProcessMemory (hProcess, Pointer(ID+$0c88), @ID, sizeof(ID), NoB); //?????? ?? ????
lbl2.Caption := 'TARGET ID ' + inttostr(ID);//??????? ?? Integer
/// 000000000000000000000000 MOB & NIP
// BA+0x1C+0x1C+0x24+0x1?+(i*0x4)+0x4 /i = 0 - 0x300/
ReadProcessMemory(hProcess, ptr(BA), @i, SizeOf (i), NoB);
ReadProcessMemory(hProcess, ptr(i+$1C), @i, SizeOf (i), NoB);
ReadProcessMemory(hProcess, ptr(i+$1C), @i, SizeOf (i), NoB);
ReadProcessMemory(hProcess, ptr(i+$24), @i, SizeOf (i), NoB);
ReadProcessMemory(hProcess, ptr(i+$14), @b2, SizeOf (i), NoB); //êîë-âî ìîáîâ
ReadProcessMemory(hProcess, ptr(i+$1C), @adress, SizeOf (i), NoB); //
b1:=0;
for b5:=0 to b2-1 do
begin
b3:=0;
while b3=0 do
begin
ReadProcessMemory(hProcess, ptr(adress+b1), @b3, SizeOf (i), NoB);
b1:=(b1+4);
end;
ReadProcessMemory(hProcess, ptr(b3+$4), @b3, SizeOf (i), NoB);
ReadProcessMemory(hProcess, ptr(b3+$120), @MobID, SizeOf (i), NoB); // ID
if MobID=ID then Break;
end;
ReadProcessMemory(hProcess, ptr(b3+$130), @mobid, SizeOf (mobid), nob); // ID
lbl1.Caption:= inttostr (mobid);
ReadProcessMemory(hProcess, ptr(b3+$274), @b3, SizeOf (i), NoB); // ID
ReadProcessMemory(hProcess, ptr(b3+$0), @mobname, SizeOf (mobname), nob);
RealmobName:= WideCharToString(mobname);
lbl3.Caption:= RealmobName;
end;
end;
end;
end.
все равно ошибка. походу я притомился и не вижу элементарного.