挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运JD寻实力长期勤快开发,来实力代理,DMA内存,项目讨论群 【瓦--无畏】纯硬件外设,永久可用,无检测 源头厂家一手制作。稳定无异味 ██【我要租此广告位】██
查看: 1857|回复: 2
打印 上一主题 下一主题

[基址相关] 《猎天》第二课 角色血量和对象分析(图文教程)

[复制链接]

32

积分

8

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
24
海币
365
交易币
0
跳转到指定楼层
楼主
发表于 2017-9-27 12:20:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


从这节课开始,我们将开始《猎天》的数据分析。
对于大部分游戏来说,我们都会从角色的血量入手,因为分析角色血量是比较容易,也是很直观的。血量的数据类型并不固定,大部分游戏是整数型,也就是DWORD型,也有很多游戏会用到浮点型,双浮点型。还有很多游戏会对血量进行加密,不过大多不是很复杂,可能是个简单的XOR(位异或)一个值,也可能是转换成百分比。还有个别的游戏会做复杂的加密,比如XNF等。下面我们就开始分析猎天的角色血量。
打开ODCE,分别加载游戏进程,如果你无法判断哪一个是正确的进程,可以打开任务管理器,在游戏的应用程序上点击右键——>转到进程,这样就会跳到我们需要附加的进程名上,这个游戏的进程名为Client.dat *32,后面的这个*32说明游戏是32位的,在win64位的系统上会在32位的进程后面标注*32,同样在win32位的系统上也会对64位的进程进行标注。这也是我们以后调试游戏前需要确定的。(如图)
附加进程后我们先尝试搜索整数型,然后通过被怪物攻击或者更改装备来改变血量,反复过滤得到较少的结果。(如图)
这时我们可能会发现,过滤到最后一个结果都没有了。出现这个结果的原因有如下几种:第一,数据类型不对;第二,数据有加密;第三,也是最容易忽略的,那就是我们用了快速扫描,而我们的搜索结果并不是可以被4整除的。(如图)
我们在取消快速扫描的情况下分别尝试整数型,浮点型,双浮点型,最终在扫描浮点型时得到了两个结果。(如图)
这两个结果中一个是绿色,一个是黑色,绿色的一般都是在基地址附近或者就是基地址,而黑色的则是有一些偏移存在的。遇到这种情况,我们首先要考虑是黑色的地址,因为如果是基地址的话则很有可能不是存放在角色对象下的,周围也没有其他的信息,不方便我们分析和读取。我们在OD的数据窗口中跟随这个黑色的地址(dd 18176462),然后在这个地址上下硬件访问断点,或者直接hr 18176462也可以,下断点之后断在如图位置(如图)
硬件断点会断在代码执行之后的位置,而内存断点会断在即将执行的代码处,这一点需要注意,这里我们得到了第一层偏移[esi+4C]fld  dword ptr [esi+4C]这句指令是将esi+4C里的值压到浮点栈st0里,我们不用管他传递到哪,只需要知道esi+4C里存放的是我们要的值,而这个值是浮点数就可以了。继续向上追esi的来源,发现来源于ecx,继续向上追发现到了子程序头部(如图)
删除硬件断点后ctrl+F9返回上一层后继续向上追,发现ecx来源于esi,然后又来源于ecx,继续返回(这里不贴图了),向上追来得到mov     ecx, dword ptr [edi+10]这样的来源(如图)
这里是一个关键,我们在edi+10上下F2断点,然后点F9运行会发现edi会变化,而在上面的        je  short 00501826上下断时发现无论怎么F9运行edi都是不变的。这个情况说明mov     ecx, dword ptr [edi+10]这条代码是在一个循环遍历里的,每次代码循环经过这里,edi的值都不一样。那么我们顺着代码往下看,发现下面有一个向上的跳转,而跳转经过的代码很像是一个二叉树的遍历(如图)
我们先向上追ebx,过一会再回来分析这个遍历。向上追得到 mov  ebx, dword ptr [esi+20],继续向上追esi的来源,得到来源于ecx后到了子程序头部,然后执行到返回,还是头部继续返回,向上追得到来源[esi](如图)
到了头部继续返回得到了基地址(如图)
整理后得到公式dd [[[[[9B9A44]]+20]]遍历    +10]+4C     血量
这个遍历看起来很乱,所以我们hr  [[[[9B9A44]]+20]]  看看有么有其他的代码访问这个地址,F9几次我们发现断到了如下的代码(如图)
这段代码是比较常见的二叉树的遍历代码,返回之后可以很容易的追到公式[[[[9B9A44]]+1C+4]+4]   二叉树根  
+0左子树   
+8右子树
+15标志位
+10对象,对象里面存放的是血量等信息
我们要追的是角色的血量,可是追到了遍历里,很明显这样并不方便我们调用,那么下节课我们来解决这个问题。




联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:《猎天》第一课——准备工作与需求分析(图文)
下一篇:云邦互联免费空间(免备案,无广告)
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

4中级会员
528/600

528

积分

1

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
527
海币
2518
交易币
0
沙发
发表于 2017-9-27 15:56:53 | 只看该作者
将这些基础的没人看的 你倒是讲讲干货
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-5-5 15:22 , Processed in 0.093500 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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