用CE搜索出来的单机游戏的内存地址错误,会改变,怎...

 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
红警2单机游戏修改器VC6
下载积分:900
内容提示:
文档格式:DOC|
浏览次数:0|
上传日期: 01:41:37|
文档星级:
该用户还上传了这些文档
下载文档:红警2单机游戏修改器VC6
官方公共微信易语言写挂,动态分配内存的游戏怎么样找内存地址。 - ::::图文教程:::: -
易语言教程_易语言源码_易语言写挂_易语言论坛_看流星社区
UID31626&帖子273&流星币2402 &阅读权限100&在线时间85 小时&
易语言写挂,动态分配内存的游戏怎么样找内存地址。
游戏:天龙八部
版本:0.13.0402
系统:windows xp
工具:CE5.2+OD1.10
目标:搜索人物基地址
第一步,用CE搜索人物HP,得到一堆地址,掉血后继续搜索,得到唯一地址0ABDC360(HP地址)
第二步,切换地图后发现该地址里的值已经不是HP,是动态地址,重复第一步搜索出新的HP地址(地址省略)
第三步,这时候不再切换地图,用CE5.2对找到的HP地址下写访问内存断点,此步也可用OD下写内存断点,找到汇编语句如下
本帖隐藏的内容需要回复才可以浏览
UID33335&帖子37&流星币279 &阅读权限30&在线时间27 小时&
& & 学习学习
UID34893&帖子2&流星币22 &阅读权限10&在线时间1 小时&
这个要看看,弄这玩意头疼
UID37219&帖子1&流星币6 &阅读权限10&在线时间0 小时&
学习学习 哈哈哈哈
UID37999&帖子27&流星币116 &阅读权限20&在线时间6 小时&
学习学习!!!
UID38022&帖子18&流星币61 &阅读权限20&在线时间2 小时&
KNAKANXDDDDW
UID38901&帖子3&流星币36 &阅读权限10&在线时间0 小时&
UID38840&帖子21&流星币84 &阅读权限20&在线时间7 小时&
................................
UID38369&帖子40&流星币153 &阅读权限20&在线时间10 小时&
学习学习..................
UID38488&帖子66&流星币222 &阅读权限30&在线时间20 小时&
<td class="t_msgfont" id="postmessage_111
UID39701&帖子10&流星币79 &阅读权限20&在线时间3 小时&
学习一下 谢谢
UID39701&帖子10&流星币79 &阅读权限20&在线时间3 小时&
学习一下 谢谢
UID42655&帖子12&流星币78 &阅读权限20&在线时间5 小时&
地对地导弹地对地导弹地对地导弹
UID45847&帖子1&流星币4 &阅读权限10&在线时间0 小时&
新手路过学习
UID33549&帖子31&流星币159 &阅读权限20&在线时间5 小时&
看看能不能到DNF去用
UID47463&帖子3&流星币6 &阅读权限10&在线时间0 小时&
CE基地址不好找
UID47128&帖子1&流星币9 &阅读权限10&在线时间0 小时&
UID41987&帖子26&流星币129 &阅读权限20&在线时间8 小时&
来学习下!
UID33201&帖子64&流星币462 &阅读权限40&在线时间22 小时&
看看那..............
UID49252&帖子5&流星币20 &阅读权限10&在线时间0 小时&
学习学习鹅鹅鹅饿饿
[通过 QQ、MSN 分享给朋友]
Powered by2352人阅读
游戏:天龙八部
版本:0.13.0402
系统:windows xp
工具:CE5.2+OD1.10
目标:搜索人物基地址
第一步,用CE搜索人物HP,得到一堆地址,掉血后继续搜索,得到唯一地址0ABDC360(HP地址)
第二步,切换地图后发现该地址里的值已经不是HP,是动态地址,重复第一步搜索出新的HP地址(地址省略)
第三步,这时候不再切换地图,用CE5.2对找到的HP地址下写访问内存断点,此步也可用OD下写内存断点,找到汇编语句如下
&&&&& 55&&&&&&&&&&&&&&& PUSH EBP&&&&& 8BEC&&&&&&&&&&&&& MOV EBP,ESP&&&&& 56&&&&&&&&&&&&&&& PUSH ESI&&&&& 8BF1&&&&&&&&&&&&& MOV ESI,ECX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ; 1.2 esi=ecx&&&&& 8B4E 04&&&&&&&&&& MOV ECX,DWORD PTR DS:[ESI+4]&&&&& 8B01&&&&&&&&&&&&& MOV EAX,DWORD PTR DS:[ECX]0044B28B&&&&& 57&&&&&&&&&&&&&&& PUSH EDI0044B28C&&&&& FF90 &&&& CALL DWORD PTR DS:[EAX+114]&&&&& 83F8 02&&&&&&&&&& CMP EAX,2&&&&& 8B3D &&&& MOV EDI,DWORD PTR DS:[&&tEngine.?tThrowS&; 0044B29B&&&&& 75 19&&&&&&&&&&&& JNZ SHORT Game.0044B29D&&&&& 68 &&&&&& PUSH 563&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &./DataPool/GMDP_CharacterData.cpp&&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &CT_MONSTER&0044B2AC&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &Character must not %s,(file:%s Line:%d)&&&&&& FFD7&&&&&&&&&&&&& CALL EDI&&&&& 83C4 10&&&&&&&&&& ADD ESP,10&&&&& 8B4E 04&&&&&&&&&& MOV ECX,DWORD PTR DS:[ESI+4]&&&&& 8B11&&&&&&&&&&&&& MOV EDX,DWORD PTR DS:[ECX]0044B2BB&&&&& FF92 &&&& CALL DWORD PTR DS:[EDX+114]&&&&& 83F8 01&&&&&&&&&& CMP EAX,1&&&&& 75 19&&&&&&&&&&&& JNZ SHORT Game.0044B2DF&&&&& 68 &&&&&& PUSH 5640044B2CB&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &./DataPool/GMDP_CharacterData.cpp&&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &CT_PLAYEROTHER&&&&&& 68 &&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &Character must not %s,(file:%s Line:%d)&0044B2DA&&&&& FFD7&&&&&&&&&&&&& CALL EDI0044B2DC&&&&& 83C4 10&&&&&&&&&& ADD ESP,100044B2DF&&&&& 8B46 08&&&&&&&&&& MOV EAX,DWORD PTR DS:[ESI+8]&&&&&&&&&&&&&& ; 1.2 eax=[esi+8]&&&&& 8B4D 08&&&&&&&&&& MOV ECX,DWORD PTR SS:[EBP+8]&&&&&&&&&&&&&& ; 01.1 血来自父函数第一个参数&&&&& 0&& MOV DWORD PTR DS:[EAX+6B8],ECX&&&&&&&&&&&& ; 1.1 血被写入0044B2EB&&&&& 8B0D 9C975B00&&&& MOV ECX,DWORD PTR DS:[5B979C]&&&&& 8B11&&&&&&&&&&&&& MOV EDX,DWORD PTR DS:[ECX]&&&&& 68 B4545700&&&&&& PUSH Game.&&&&&&&&&&&&&&&&&&&&&&&& ; ASCII &player&&&&&& 6A 19&&&&&&&&&&&& PUSH 190044B2FA&&&&& FF52 4C&&&&&&&&&& CALL DWORD PTR DS:[EDX+4C]0044B2FD&&&&& 5F&&&&&&&&&&&&&&& POP EDI0044B2FE&&&&& 5E&&&&&&&&&&&&&&& POP ESI0044B2FF&&&&& 5D&&&&&&&&&&&&&&& POP EBP&&&&& C2 0400&&&&&&&&&& RETN 4
这是完整的子函数,实际血被写入的那句代码是红色那句,由此可得知血被存在[eax+6b8]中,6b8是个偏移量,HP指针地址其实存在eax中,根据该段代码的分析,得知eax=[esi+8],而esi=调用函数带进来的ecx,以上代码中注释1.1,1.2,1.3有说明,记好此时的eax,ecx两个值,下面一步就是要查这两个值存的东西变不变
第四步,让自己掉一次血,发现HP地址没变,OD中行代码处下断点,发现此时的eax,ecx也没变,猜测HP地址切换地图时才可能重新分配
第五步:切换一次地图后代码中断,发现此时的eax,ecx与上次又不一样了,上步的猜测可能正确,因为eax=[esi+8]=[ecx+8],所以eax是依赖ecx的,ecx又是来自调用函数的,所以使用调用堆栈去查看调用函数中ecx是怎么来的,OD中调用堆栈的父函数处回车即可,以下是父函数代码
004D7A10&&& 55&&&&&&&&&&&&&&& PUSH EBP004D7A11&&&&& 8BEC&&&&&&&&&&&&& MOV EBP,ESP004D7A13&&& 51&&&&&&&&&&&&&&& PUSH ECX004D7A14&&&&& A1 F0975B00&&&&&& MOV EAX,DWORD PTR DS:[5B97F0]004D7A19&&&&& 3B05 E4975B00&&&& CMP EAX,DWORD PTR DS:[5B97E4]004D7A1F&&& 53&&&&&&&&&&&&&&& PUSH EBX004D7A20&&& 56&&&&&&&&&&&&&&& PUSH ESI004D7A21&&&&& 0F85 AB080000&&&& JNZ Game.004D82D2004D7A27&&&&& 8B75 08&&&&&&&&&& MOV ESI,DWORD PTR SS:[EBP+8]004D7A2A&&&&& 8B0D 78695B00&&&& MOV ECX,DWORD PTR DS:[5B6978]004D7A30&&&&& 8B46 08&&&&&&&&&& MOV EAX,DWORD PTR DS:[ESI+8]004D7A33&&&&& 8B11&&&&&&&&&&&&& MOV EDX,DWORD PTR DS:[ECX]004D7A35&&& 50&&&&&&&&&&&&&&& PUSH EAX004D7A36&&&&& FF52 44&&&&&&&&&& CALL DWORD PTR DS:[EDX+44]&&&&&&&&&&&&&&&& ; 2.5 eax是该函数的返回值,该函数返回一个重要的地址004D7A39&&&&& 8BD8&&&&&&&&&&&&& MOV EBX,EAX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ; 2.4 ebx=eax004D7A3B&&&&& 85DB&&&&&&&&&&&&& TEST EBX,EBX004D7A3D&&&&& 0F84 8F080000&&&& JE Game.004D82D2004D7A43&&&&& 33C0&&&&&&&&&&&&& XOR EAX,EAX004D7A45&&&&& 8A46 0C&&&&&&&&&& MOV AL,BYTE PTR DS:[ESI+C]004D7A48&&& 57&&&&&&&&&&&&&&& PUSH EDI004D7A49&&&&& 8BBB 2C010000&&&& MOV EDI,DWORD PTR DS:[EBX+12C]&&&&&&&&&&&& ; 2.3 edi=[ebx+12c]004D7A4F&&&&& 83E0 01&&&&&&&&&& AND EAX,1004D7A52&&& 8945 FC&&&&&&&&&& MOV DWORD PTR SS:[EBP-4],EAX004D7A55&&& 74 2B&&&&&&&&&&&& JE SHORT Game.004D7A82004D7A57&&&&& 8B4E 18&&&&&&&&&& MOV ECX,DWORD PTR DS:[ESI+18]004D7A5A&&& 51&&&&&&&&&&&&&&& PUSH ECX004D7A5B&&&&& 8BCF&&&&&&&&&&&&& MOV ECX,EDI004D7A5D&&&&& E8 DE1FF7FF&&&&&& CALL Game.00449A40004D7A62&&&&& 8B15 78695B00&&&& MOV EDX,DWORD PTR DS:[5B6978]004D7A68&&&&& 3B5A 44&&&&&&&&&& CMP EBX,DWORD PTR DS:[EDX+44]004D7A6B&&& 75 15&&&&&&&&&&&& JNZ SHORT Game.004D7A82004D7A6D&&&&& 8B57 08&&&&&&&&&& MOV EDX,DWORD PTR DS:[EDI+8]004D7A70&&&&& 8B0D 10985B00&&&& MOV ECX,DWORD PTR DS:[5B9810]004D7A76&&&&& 8B52 70&&&&&&&&&& MOV EDX,DWORD PTR DS:[EDX+70]004D7A79&&&&& 8B01&&&&&&&&&&&&& MOV EAX,DWORD PTR DS:[ECX]004D7A7B&&& 52&&&&&&&&&&&&&&& PUSH EDX004D7A7C&&&&& FF90 A0000000&&&& CALL DWORD PTR DS:[EAX+A0]004D7A82&&&&& 33C0&&&&&&&&&&&&& XOR EAX,EAX004D7A84&&&&& 8A46 0C&&&&&&&&&& MOV AL,BYTE PTR DS:[ESI+C]004D7A87&&&&& 83E0 02&&&&&&&&&& AND EAX,2004D7A8A&&&&& D1E8&&&&&&&&&&&&& SHR EAX,1004D7A8C&&&&& 85C0&&&&&&&&&&&&& TEST EAX,EAX004D7A8E&&& 74 0B&&&&&&&&&&&& JE SHORT Game.004D7A9B004D7A90&&&&& 8B46 20&&&&&&&&&& MOV EAX,DWORD PTR DS:[ESI+20]004D7A93&&& 50&&&&&&&&&&&&&&& PUSH EAX&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ; 02.1 eax里存放了血,给子函数使用004D7A94&&&&& 8BCF&&&&&&&&&&&&& MOV ECX,EDI&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ; 2.2 ecx=edi004D7A96&&&&& E8 E537F7FF&&&& CALL Game.&&&&&&&&&&&&&&&&&&&&&&&& ; 2.1 ecx影响了子函数004D7A9B&&&&& 33C0&&&&&&&&&&&&& XOR EAX,EAX
CALL Game.即第三步找到的子函数,调用子函数时血量值作为参数传进去,具体的子函数功能我也没搞清楚,大体感觉上可能是拿到数据包后给内存中的HP地址赋值。
继续分析这段代码,2.1,2.2,2.3这三句发现ecx=[ebx+12c],看来这里的12c又是一个偏移量,在2.3上下断点,获取到此时的ebx=0B387708,继续分析发现2.4,2.5中ebx=eax=2.5调用的子函数的返回值,动态调试跟下去发现2.5那行调用的子函数里,的确是为了获取这个0b387708,具体函数功能没看懂,里面是一堆比较复杂的地址运算得到了这个值
第六步:CE中查找0b387708存在什么地址里,找到两个地址013D2BD8和013D6064,随后切换地图发现这两个地址里的值都改变了,但还是相同,用这个新值进行[[[新值+12c]+8]+6b8]运算,终于得到了HP值。感觉这两个地址有可能是个不变的值,重开游戏后确认,的确同样的运算还能得到HP值。姑且任务第一个值013D2BD8为要查找的基地址,而血是经过偏移3次后找到的,偏移量分别是12c,8,6b8目标基本完成,OVER! &
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:72359次
排名:千里之外
转载:56篇
评论:19条
(11)(9)(29)(5)(7)(1)您所在的位置:&>&&>& && 教你用CE修改器修改单机游戏的等级、技能
教你用CE修改器修改单机游戏的等级、技能
发布者:咕咕猪 发布时间: 23:53:37 人气:
看完这篇文章有何感觉?已经有58人表态
& 2014 咕咕猪 苏ICP备号-2 Email:guguzhu_}

我要回帖

更多关于 内存地址 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信