16,748
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Timer1Timer(Sender: TObject);
var
roadrashhandle:THandle;//游戏句柄
pid: dword;//游戏进程ID
curmoney:integer;//取出的金钱数目
newmoney:integer;//要改成的金钱数目
h: THandle;//进程的句柄
lpNumberOfBytesRead:DWord;//读取了多少字节
lpNumberOfBytesWrite:DWord;//写了多少字节
jiashu:integer;
//血的地址没有找准,只能放弃了
//blood:integer;
begin
roadrashHandle:=FindWindow('RashRoot','Road Rash');
if roadrashHandle=0
then
begin
Label2.caption:='游戏未运行';
Label2.Font.Color:=clRed;
end
else
begin
Label2.caption:='游戏已运行';
Label2.Font.Color:=clGreen;
GetWindowThreadProcessId(roadrashHandle, @pid);
h := OpenProcess(PROCESS_ALL_ACCESS, false, pid);
if h = 0 then Exit;
ReadProcessMemory(h,ptr($4B8A18),@curmoney,4,lpNumberOfBytesRead);
Edit2.Text:=inttostr(curmoney);
newmoney:=strtoint(edit1.text);
if CHeckBox1.Checked then
begin
//游戏中金钱的地址为$4B8A18
WriteProcessMemory(h,ptr($4B8A18),@newmoney,4,lpNumberOfBytesWrite);
end;
jiashu:=10;
if CHeckBox2.Checked then
begin
//游戏中加速的地址为$465A34
WriteProcessMemory(h,ptr($465A34),@jiashu,4,lpNumberOfBytesWrite);
end;
//以下本来是想锁定血,可是好象未能找到地址
{ blood:=$1F1F0A00;
if CHeckBox3.Checked then
begin
WriteProcessMemory(h,ptr($49E115),@blood,4,lpNumberOfBytesWrite);
end;
}
end;
end;