7.第二阶段x64游戏实战-分析人物属性
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:6.第二阶段x64游戏实战-分析人物状态
首先打开人物面板,查看人物的血量,然后如下图CE中数值类型选择4字节,扫描类型选择精确数值,一般游戏血量是4字节,如果4字节搜不到就使用8字节,扫描类型不变
然后首次扫描完后修改一下血量(比如脱掉加血量的装备或让怪物打几下降低血量或使用物品加血),如下图修改完血量再次扫描之后,就只剩下一个了
然后如下图修改它的值,然后关闭游戏中的人物属性面板,然后再重新打开,有些游戏人物面板的数据不是实时读取人物数据的,需要把人物面板关了重新打开,重新打开之后人物面板中的血量如果变成了下图中的值就说明下图中0x22F8B664A78这个内存地址就是人物血量的地址
然后之前找坐标的时候是有一件事,就是当时使用x坐标的数据进行的查找,找到x坐标之后,如下图使用浏览相关内存区域可以看到x坐标、z坐标、y坐标这三个数据,这说明同样的数据会放到一起,所以找到了血量就找到了,人物属性中其它的数据
如下图使用血量的地址浏览相关内存区域,下图红框中都是人物的属性,有最大生命值、蓝量、最大蓝量、攻击力、防御力等,这些数字都能在游戏中的人物面板中看得到
然后找到地址之后找它的基地址,然后就来到x64dbg,首先打开x64dbg,打开之后如下图点击附加
然后如下图红框通过标题和路径,去找受害者程序
附加受害者程序之后,鼠标左键单机下图红框位置,下图红框位置是内存窗口
然后按CTRL+G,会弹出下图红框的弹框,然后输入血量的地址,然后点确定
如下图红框,内存窗口就会跳转到血量的地址
然后使用硬件访问断点,找它的基址,如下图设置硬件访问断点
设置硬件访问断点之后会发现没反应,这时候关闭人物属性面板,重新打开,会发现硬件访问断点触发,触发之后来到下图位置
然后删除硬件访问断点,首先点击下图红框位置
然后鼠标右击要删除的硬件断点,删除后可以防止因为它乱断导致我们找错位置
然后点击下图红框位置
然后在下图红框位置的代码访问了血量,rax+0x2978访问了血量
然后rax的值来自于下图红框位置,来自于[rbx+0x18],现在的公式[rbx+0x18]+0x2978
rbx的值来自于rcx,现在的公式[rcx+0x18]+0x2978
然后在断点状态下,使用在内存窗口按CTRL+G输入公式跳转验证一下,如果跳转的位置还是血量的地址就说明公式正确,如果不是血量的地址就说明某个地方写错需要重新观察,这里的公式是正确的
然后再找rcx的值哪来的,rcx的值是来自于上一层,然后鼠标左键双击下图红框位置
打上断点
然后关闭人物属性面板重新打开,让断点触发,如下图触发之后鼠标左键双击下图红框位置,取消断点
取消断点之后按CTRL+G再按F8来到下图红框位置,可以看到rcx的值来自于rsi,所以现在的公式[rsi+0x18]+0x2978,记得验证一下公式是否正确
然后再找rsi的值,然后往上翻看到rsi的值来自于[rsi+0x1B0],现在的公式[[rsi+0x1B0]+0x18]+0x2978
然后再继续找rsi的值哪来的,如下图红框rsi的值来自于[rax+0x98],现在的公式[[[rax+0x98]+0x1B0]+0x18]+0x2978
然后再找rax的值哪来的,如下图红框,rax的值来自于基址0x00007FF6A2AACD70,现在的公式[[[[0x00007FF6A2AACD70]+0x98]+0x1B0]+0x18]+0x2978
模块的地址
然后计算偏移Game.exe+0x93CD70
最终的公式:[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978
上一个内容中找到的公式是:
[[Game.exe+0x93CD70]+0x98]+0x1B8,可以发现人物属性的基址个上一个内容中人物状态的基址是同一个,只是所在层级不一样
[[Game.exe+0x93CD70]+0x98]+5C是x坐标
[[Game.exe+0x93CD70]+0x98]+60是z坐标
[[Game.exe+0x93CD70]+0x98]+64是y坐标
[[Game.exe+0x93CD70]+0x98]+1B8是人物状态
其它数据的偏移:
一个数据是4字节,也就是说[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978到[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x4之间是血量的数据
然后
[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x5
到
[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x9位置又是一个属性的数据,其它属性以此类推
如果血量的数据是4字节其它的数据一般也都会是4字节,现在只需要知道这些剩下的慢慢看后面都会写