feiyang025 发表于 2011-3-31 09:09:40

新人求助,浪费高手一分钟时间,谢谢

本人刚刚学习用delphi写辅助。
想用植物大战僵尸试试手,在网上找到基址 游戏内存基址:base = 0x006A9EC0
    游戏阳光地址:+0x5560
    游戏金钱地址:+0x28
    游戏关卡地址:+0x24//关卡如:A-B 实际值为:(A-1)×10+B

按照基址写的代码如下
Var
Gameh:HWND;
GamePid:DWORD;
GamehProcess:Thandle;
YNum:DWORD;
base:DWORD;
readByte:DWORD;
begin
//获取游戏窗口句柄
Gameh:=findwindow(nil,'植物大战僵尸中文版');
//获取进程ID
GetWindowThreadProcessId(Gameh,GamePid);
//获取进程句柄
GamehProcess:=OpenProcess(PROCESS_VM_READ or PROCESS_VM_WRITE,false,GamePid);
//改阳光
Readprocessmemory(GamehProcess, pointer($006A9EC0),@base,4,readByte);
Readprocessmemory(GamehProcess, pointer(base+768),@base,4,readByte);
Readprocessmemory(GamehProcess, pointer(base+5560),@YNum,4,readByte);
Edit1.text:=inttostr(YNum);

运行以后一直得不到正确的阳光数,高手帮帮忙。
   万分感激。

遗失记忆 发表于 2011-3-31 09:09:52

游戏阳光地址:+0x5560
按照你的公式的话你代码是写错的。


是基本地址的值 + 0x768 地址保存的值
然后由那个值加上0x5560
才是你公式地址的值

也就是先读这个内存地址的值 0x006A9EC0+768
把读到的值加上 0x5560
然后就是游戏阳光了。

恋爱的犀牛 发表于 2011-3-31 09:10:14

Readprocessmemory(GamehProcess, pointer($006A9EC0),@base,4,readByte);   
Readprocessmemory(GamehProcess, pointer(base+$768),@base,4,readByte);
Readprocessmemory(GamehProcess, pointer(base+$5560),@YNum,4,readByte);
Edit1.text:=inttostr(YNum);

这样就ok了!
页: [1]
查看完整版本: 新人求助,浪费高手一分钟时间,谢谢