自学内容网 自学内容网

24.第二阶段x86游戏实战2-背包物品属性分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:23.第二阶段x86游戏实战2-背包遍历(OD卡死解决办法,背包数量基址)

上一个内存通过物品的数量追出了一个基址,通过这个基址可以得到,如果物品有多个会得到数量,如果物品只有1个就不知道存的是什么,也就是说只找到了数量,但是背包里的物品除了数量还有物品名字、物品简介、物品属性等,本次接着继续

本次通过物品的名字去追

首先打开游戏打开CE,并使用CE附加到游戏,如下图红框使用物品名字搜索

然后通过修改数值,最终确定了下图红框是物品的名字,

游戏中的效果

然后复制这个地址再打开OD,并使用OD附加到游戏,如下图,使用ASCII数据地址的方式显示内存

这样如下图红框物品的名字

下图的地址与上图的地址不一样了,是因为OD卡死让游戏重启了,然后使用硬件访问断点,注意这个名字是通过鼠标放到物品上,会悬浮一个物品描述的悬浮框触发的

下图红框位置 cmp byte ptr[dex],0 访问了名字

然后分析代码,如下图,dex来自于eax,eax上方有一个call,所以eax的值是call的返回值,所以接下来要进入call里看看怎么回事

在下图红框位置打断点

通过鼠标放到物品上触发的悬浮框,悬浮框触发的断点

然后取消断点

然后按F7,进入上图断点住的call里,会来到下图位置,得到的公式[[ecx+0x2C]+0x18]

然后上一个内容里,[[0x15*4+[[0x83F458]+0x181C4]]+0x14]+0x58,这样的公式,

然后 [0x15*4+[[0x83F458]+0x181C4]是物品,加0x14、加0x58是数量,[[0x83F458]+0x181C4]是背包基址,找到上图的代码就不需要往上追了,可以直接使用上一个内容里找到的背包基址加上偏移测试了

0x83F458是上一个内容的基址,所以正确的基址是,下图红框的两个数相加的结果,结果是 0x10AF458

然后通过物品在背包中的位置,在内存中找到它,物品在背包22个位置上,背包序号是从0开始所以物品位置是21,21乘以4=0x54

然后数据窗口跟随

跟随之后找0x2C位置,如下图红框

然后再次数据窗口跟随

然后0x18位置再次数据窗口跟随

然后如下图使用ASCII方式显示内存

然后下图就是物品的名字了,名字不正确是OD显示的问题

然后下图偏移(偏移0x2C这一层)可以找到物品等级和物品使用等级,然后现在的公式 [[0x15*4+[[0x83F458]+0x181C4]]+0x2C]+0x18是物品名

[[0x15*4+[[0x83F458]+0x181C4]]+0x2C]+0x20是物品等级

[[0x15*4+[[0x83F458]+0x181C4]]+0x2C]+0x3C是物品使用等级(也就是角色多少级才能使用),现在只能认出这一些,然后本章到这就结束了


img


原文地址:https://blog.csdn.net/qq_36301061/article/details/142768670

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!