当前位置: 首页 > news >正文

30.x86游戏实战-遍历背包数组

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

本次游戏没法给

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

工具下载:

链接: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

它可以正常跳到背包第一个位置

然后接下来观察一下背包数组的数据,在第一个位置右击选择数据窗口跟随

可以看到有一些字符串,这里看的不是第一个位置,是第二个位置,第一个位置数据窗口跟随过去没有什么有用的东西

翻译,它应该会对应物品的中文名

然后还看到,背包基址(第一个位置)后面还有很多数据,但是快捷操作背包只有六个,这是什么情况?

从第六个开始,后面是背包里的东西,如下图游戏的背包(注意不是上面分析的快捷背包了,是背包)


 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Scrapy 爬取旅游景点相关数据(七):利用指纹实现“不重复爬取”
  • 怎么评价程序员40岁了竟然还在撸代码?
  • Python爬虫入门03:用Urllib假装我们是浏览器
  • 【MySQL】表的约束{ 常见约束 空属性 默认值 列描述comment zerofill 主键 复合主键 自增长 唯一键 外键 }
  • 15.3 zookeeper实现分布式锁
  • 强化学习时序差分算法之多步Sarsa算法——以悬崖漫步环境为例
  • 什么是虚拟化技术,有什么优缺点?
  • 76.SAP ME - 归档
  • World of Warcraft [retail] 100G download 2024.07.31
  • 数据透视表(三)
  • Flutter自定义通用防抖的实现
  • c语言-数组(3)
  • onlyoffice用nginx反向代理
  • 《零散知识点 · SpringBoot Starter》
  • 花几千上万学习Java,真没必要!(三十七)
  • 收藏网友的 源程序下载网
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • AHK 中 = 和 == 等比较运算符的用法
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • magento2项目上线注意事项
  • python学习笔记-类对象的信息
  • React组件设计模式(一)
  • V4L2视频输入框架概述
  • 半理解系列--Promise的进化史
  • 编写符合Python风格的对象
  • 搭建gitbook 和 访问权限认证
  • 巧用 TypeScript (一)
  • 什么是Javascript函数节流?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 写代码的正确姿势
  • 再谈express与koa的对比
  • 自制字幕遮挡器
  • Semaphore
  • ​io --- 处理流的核心工具​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #数学建模# 线性规划问题的Matlab求解
  • (1)(1.13) SiK无线电高级配置(六)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (ibm)Java 语言的 XPath API
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (Java数据结构)ArrayList
  • (待修改)PyG安装步骤
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)scrum常见工具列表
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 的字符串暂存池
  • .NET轻量级ORM组件Dapper葵花宝典
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [Android Studio 权威教程]断点调试和高级调试