免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:29.x86游戏实战-XXX发包函数
背包一般是一个数组结构(数组结构就跟饭店里的座位一样,数量是固定的,饭店的座位是放人的,数组结构是用来放数据的),背包数组里的内容一般是内存地址,这个内存地址指向了物品,有了数组的概念之后开始分析
首先打开CE并附加到游戏
使用未知的初始值,然后点击首次扫描
会扫描出这么一堆东西
然后来到游戏,下图是游戏中快捷背包
下图位置是空的,什么物品也没放,第4个位置
然后这时随便把物品放到第4个位置,然后来到CE点击变动的数值,然后点击再次扫描
这样数据就会变少了
然后不要动游戏里第4个位置,然后点击未变动的数值
这里补充一个东西记得要以 十六进制观看,如下图
然后再次来到游戏改变第4个位置,然后来到CE选择变动的数值然后再次扫描,也就是一种重复上方两个操作,最终剩下了一个,这个也比较符合背包数据的情况,它第4个位置放不同的物品它会变不同的值(内存地址)把物品拿掉就会变成0
然后复制这个内存地址,也就是复制5FC1EDE8,然后打开OD并附加到游戏,然后单机内存区,然后按CTRL+G,然后粘贴5FC1EDE8,然后点ok,OD刚打开可能需要操作 单机内存区,然后按CTRL+G,然后粘贴5FC1EDE8,然后点ok 这个两次,不然不准
然后点完OK就来到了5FC1EDE8位置
然后在5FC1EDE8位置下一个访问断点
然后就回来的下图位置
然后下图红框圈出来的就是数组访问数据的算法,ecx是数组第一个数据,一个数据大小是4字节,eax是序号它决定了访问数组里第几个数据
下方的内容地址与上方的不一样,因为这里游戏崩溃重启了
然后打断点观察,打断点之前别忘了删除硬件访问断点
删除完硬件断点之后在下图红框位置打断点
经过观察03应该是背包第一个位置,然后在内存区,按CTRL+G写下图红框的内容
点击OK之后,就跳转到背包第一个位置了,这个可以在游戏中把背包第一个位置的物品拿掉进行测试
更改了物品位置之后OD不会自动刷新,这时需要,鼠标点击一下内存区(如点击了还没反应,那就在内存去换个位置点,反正就是点击内存区OD内存区的内容才会刷新)
背包六个位置分别对应
然后接下来找ecx的值(找基址了),如下图,通过观察ecx来自于esi+0x38位置的值,注意esi+0x38是一个内存地址,这里要的是内存地址里的值,然后esi的值来自于ecx,ecx来自于上一层
然后在下图红框位置打断点
让后来到下图位置
直接就能看到ecx的值了,然后就得到了基址[[0x1A5FB24]+0x38]+3*4
然后测试,在内存去按CTRL+G然后输入[[0x1A5FB24]+0x38]+3*4然后点OK
它可以正常跳到背包第一个位置
然后接下来观察一下背包数组的数据,在第一个位置右击选择数据窗口跟随
可以看到有一些字符串,这里看的不是第一个位置,是第二个位置,第一个位置数据窗口跟随过去没有什么有用的东西
翻译,它应该会对应物品的中文名
然后还看到,背包基址(第一个位置)后面还有很多数据,但是快捷操作背包只有六个,这是什么情况?
从第六个开始,后面是背包里的东西,如下图游戏的背包(注意不是上面分析的快捷背包了,是背包)