看流星社区

 找回密码
 注册账号
查看: 2787|回复: 2

[Delphi] Delphi写的单机游戏辅助的一点小问题

[复制链接]

该用户从未签到

发表于 2011-4-1 15:28:08 | 显示全部楼层 |阅读模式
const
  Base=$006a9ec0;
var
  Form1: TForm1;
  hd:cardinal;
  pid:cardinal;
  hprocess:cardinal;
  lpNumberOfBytesRead:dword;
  ygBase:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
hd:=findwindow(nil,'植物大战僵尸中文版');
getwindowthreadprocessid(hd,pid);
hprocess:=openprocess(PROCESS_ALL_ACCESS,false,pid);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ReadProcessMemory(hprocess,pointer(Base),@ygBase,4,lpNumberOfBytesRead);
ReadProcessMemory(hprocess,pointer(ygBase+$768),@ygBase,4,lpNumberOfBytesRead);
ReadProcessMemory(hprocess,pointer(ygBase+$5560),@ygBase,4,lpNumberOfBytesRead);
label2.Caption :=inttostr(ygBase);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
i:=200;
WriteProcessMemory(hprocess, @ygBase, pointer(i),4,lpNumberOfBytesRead);
label2.Caption :=inttostr(ygBase);

请各位高手指点指点,为什么我写不进去呢?读是正常的,谢谢

该用户从未签到

发表于 2011-4-1 15:28:19 | 显示全部楼层
如果你要写的目标地址。是游戏原来的地址。你先把该地址写保护去掉先
如果你要写的地址不是游戏原来地址。就先申请一个可写的地址

该用户从未签到

发表于 2011-4-1 15:28:29 | 显示全部楼层
不是保护的问题,是地址搞晕了,要实现功能,下面两句代码小改一下

原码:ReadProcessMemory(hprocess,pointer(ygBase+$5560),@ygBase,4,lpNumberOfBytesRead);  
改成:ReadProcessMemory(hprocess,pointer(ygBase+$5560),@ygBase2,4,lpNumberOfBytesRead);

原码:WriteProcessMemory(hprocess, @ygBase, pointer(i),4,lpNumberOfBytesRead);
改成:Writeprocessmemory(hprocess,pointer(ygbase+$5560),@i,4,lpnumberofbytesread);


另对楼主的这句代码有兴趣
WriteProcessMemory(hprocess, @ygBase, pointer(i),4,lpNumberOfBytesRead);
有时间试试看能不能实现
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 21:26

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表