37.x86游戏实战-XXX遍历怪物数组
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:36.x86游戏实战-C++代码实现锁血
上一个内容里,把游戏修改血量的函数封装到c++里了,本次找周围怪物,本来想通过打怪物,然后触发 0x8174E0也就是修改血量的函数断点去追,发现不好找,有很多vm代码,0x8174E0函数的ecx一直都是玩家角色的地址,CTRL+F9也一直会反倒下图位置
![]()
然后换了一张有怪物的地图,发现修改血量的函数ecx的值有变化了,它不止有玩家角色的地址了,还有怪物的地址,之前找的玩家角色名字在偏移0x258位置一般怪物NPC也都会是这个位置,如下图,怪物地址
![]()
怪物名字
![]()
然后在ecx是怪物的时候按CTRL+F9,返回的位置也不一样了
![]()
然后给数据(ecx的数据,把ecx到数据复制一下在内存区CTRL+G跳转过去)下一个硬件访问断点,如下图
![]()
然后它来到了下图位置(它可能会断在别的位置,根据现在要找到东西只要附近有下图红框的写法就要敏感起来,因为怪物列表就是个数组,数组到访问算法就是下图红框到写法),下图红框是一个数组访问的算法,这就可能是怪物列表
![]()
然后看eax的值
![]()
这时call的地址
![]()
然后游戏崩溃了下方的地址与上方不一样了,崩溃是正常的,重新再来就好了,所以分析的时候要养成记录的好习惯
然后这个eax一般就会是怪物列表的基址了
![]()
接下来找eax的值哪来的,最终发现eax的值来自于esi+10
![]()
怎么确认eax的值来自于esi+10的?在下方红框位置打断点
![]()
然后按F8,来到下图红框位置观察eax的值与上方红框时的值是否一样,如果一样就说明eax的值来自于esi+10
![]()
现在eax的值0x5E227688
![]()
然后经过观察esi的值是在函数头部赋值到,函数头部有一句mov esi,ecx,ecx的值来自于上一次,所以esi的值也来自于上一层,然后按CTRL+F9来到下图位置,看到ecx的值又来自于esi,然后记录现在得到的取值算法[esi+10]是怪兽列表
![]()
然后经过观察esi的值还是来自于上一层
![]()
然后CTRL+F9往上反,来到了下图位置
![]()
然后打断点观察ecx寄存器
![]()
然后[ecx+10]是怪物列表地址,也就是下图红框是ecx到值也就是0x5E7B5AF0+0x10是怪物地址
![]()
ecx的值来自于esi+88,通过观察代码发现esi的值来自于ecx,ecx看着又是来自于上一层,现在怪物列表的计算是[[esi+0x88]+0x10],所以在下图红框位置打断点接着CTRL+F9
![]()
然后到了下图位置,现在的怪物列表计算 [[[esi+0x14]+0x88]+0x10]
![]()
然后经过观察ecx的值来自于esi,通过观察代码(代码很长往上滑了有一会)esi的值来自ecx,ecx来自于上一层,所以在下图位置打断点,继续CTRL+F9
![]()
然后来到了一个更复杂的位置
![]()
这里是[[[[0x0B000000+3*4+0xA8]+0x14]+0x88]+0x10]是怪物列表,然后eax的值通过断点看出一直是3是固定的
![]()
esi的值好像还是来自于上一层,在下图红框位置打断点,按CTRL+F9
![]()
然后到了下图位置,然后这里就又崩溃了
![]()
重新启动游戏并用OD进行附加,直接来到0x7554EB位置,再仔细观察一下,然后发现esi的值来自于ebp-0x47C位置
![]()
然后再找ebp,然后看到ebp-0x47C的值来自于ecx
![]()
然后还是要来到上一层看看ecx在哪来的,然后看到ecx的值来自于eax,eax前面有一个call,大概率eax的值是0x006FC760函数的返回值
![]()
进入0x006FC760函数里,进来之后可以看到有很多retn,但是可以看到下图绿框是一个写死的值,如果写死的值不行那在断点看看eax在那个ren返回的,然后在分析,现在把这个值带入公式,看看能不能找到怪物列表,[[[[[0x1A5E258]+3*4+0xA8]+0x14]+0x88]+0x10]
![]()
然后在下图红框位置写 dd [[[[[0x1A5E258]+3*4+0xA8]+0x14]+0x88]+0x10],写完之后按回车,如下图
![]()
然后会跳到下图的内容,全是内存地址,这是一个数组
![]()
然后之前找的玩家角色名是0x258位置,所以先随便找几个数据窗口跟随
![]()
然后鼠标双击下图红框位置
![]()
然后找0x258,如下图红框,显示的是0
![]()
然后再次使用下图红框的功能,换一个数据窗口跟随
![]()
这次0x258位置就有数据了
![]()
然后鼠标右击选择数据窗口中跟随
![]()
然后鼠标右击选择Unicode
![]()
然后就有怪物名字了
![]()
然后换成Unicode之后怎么改回去?鼠标右击选择地址就可以了
![]()
怪物列表基址就找到了,在其它游戏可能不会跟上方一样这么顺利,它可能追着追着就会跟乱,一个值在一个函数中mov来mov去看的眼花,这时可以尝试放弃,可以找一个游戏中只要执行了就有基址的位置(能追到眼花这期间肯定会遇到一个常断的函数并且某个寄存器的值是想要的地址),给hook掉,通过hook的方式来得到基址

相关文章:
37.x86游戏实战-XXX遍历怪物数组
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
go语言中map为什么不会自动初始化?
go语言中map为什么不会自动初始化? 在Go语言中,map类型不会自动初始化的原因在于其设计哲学和类型系统。以下是具体原因: 零值设计:Go语言中的每种类型都有一个零值,例如整型的零值是0,布尔型的零值是fals…...
大数据面试SQL(一):合并日期重叠的活动
文章目录 合并日期重叠的活动 一、题目 二、分析 三、SQL实战 四、样例数据参考 合并日期重叠的活动 一、题目 已知有表记录了每个品牌的活动开始日期和结束日期,每个品牌可以有多个活动。请编写一个SQL查询合并在同一个品牌举行的所有重叠的活动,…...
stm32应用、项目、调试
主要记录实际使用中的一些注意点。 1.LCD 1.LCD1602 电路图: 看手册:电源和背光可以使用5v或者3.3v,数据和控制引脚直接和单片机引脚连接即可。 单片机型号:stm32c031c6t6 可以直接使用推完输出连接D0--D7,RS,EN,RW引脚&#…...
WEB渗透-未授权访问篇
WEB渗透未授权访问篇-Redis-CSDN博客 activemq 默认端口8161,默认账户密码admin/admin http://1.1.1.1:8161/admin/connections.jsp PUT /fileserver/%2F%2F2%083.jsp HTTP/1.0 Content-Length: 27 Host: 1.1.1.1:8161 Connection: Close Authorization: Basic YW…...
x86_64、AArch64、ARM32、LoongArch64、RISC-V
以下是对 x86_64、AArch64、ARM32、LoongArch64 和 RISC-V 这几种计算机架构的介绍,包括它们的应用场景、优缺点: 1. x86_64 简介: x86_64 是由 AMD 推出的 64 位扩展版 x86 架构,兼容于英特尔的 IA-32 架构。这一架构被广泛应用于桌面和服…...
git push上不去的问题Iremote reiectedl——文件过大的问题
在新建分支的时候,发现push怎么也上传不上去,一开始觉得是权限的问题,但是尝试了各种方案都没有用,后面再仔细看了一下是文件太大了,远程拒绝推送 接下来,和大家讲讲我的解决方案 1、把修改的代码迁移到新…...
Qt Creator卡顿
删除IDE的配置参数的保存文件夹QtProject,使得Qt Creator恢复出厂值。 C:\Users\替换为你的用户名\AppData\Roaming\QtProject 参考链接: Qt Creator 卡顿 卡死...
数据结构笔记(其五)--串
目录 12.串 12.1 基本操作 12.2 串的存储结构 12.3 字符串的模式匹配算法 (1).朴素模式匹配算法 (2).KMP算法 i.next[]数组的求解 ii.next[]数组的优化——nextval数组 iii.手算nextval数组 iiii.机算nextval数组 + KMP函数 12.串 串,即字符串(string),由零个或多…...
Python爬取高清美女图片
文章概述 本文将详细介绍如何使用Python编写一个简单的爬虫来抓取高清美女图片。我们将利用requests库来发送HTTP请求,使用BeautifulSoup库来解析HTML文档,从而提取出图片的URL并将其下载到本地。 技术栈 Python: 编程语言requests: HTTP客户端库Beau…...
gin路由
1主文件 package main import ("github.com/gin-gonic/gin""godade/user""net/http" ) func main() {router : gin.Default()router.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "Hello World")})v1 : router…...
达梦数据库操作以及报错修改
执行失败(语句1) -6105:: 数据类型不匹配 第12 行附近出现错误 插入sql语句 INSERT INTO "by_ioc_rbac"."user_info" ("user_account", "user_name", "birthday", "password", "gender", "mobi…...
江科大/江协科技 STM32学习笔记P21
文章目录 ADC模数转换器ADC简介逐次逼近型ADCSTM32的ADCADC基本结构输入通道转换模式单次转换,非扫描模式连续转换,非扫描模式单次转换,扫描模式连续转换,扫描模式 触发控制数据对齐转换时间校准硬件电路电位器产生可调电压的电路…...
第三方jar自带logback导致本地日志文件不生成
1.问题及解决 这是依赖的jar包,自己有logback,只打印到控制台,导致我们项目里配置的error级别日志不会生成到日志文件中去。ai给的答案是自己控制加载顺序,但很麻烦,--logging.config也不行,最好下了个7z压…...
国产数据库备份恢复实现
数据库备份恢复是数据库高可用的基本能力,如何通过备份数据快速高效的恢复业务并且满足不同场景下的恢复需求,是各数据库厂商需要关注的要点。本文将介绍几种国产数据库的备份恢复功能,以加深了解。 1、数据库备份恢复方案 数据库备份是生产…...
数据仓库: 2- 数据建模
目录 2- 数据建模2.1 维度建模2.1.1 维度建模的基本概念2.1.1.1 事实表 (Fact Table)2.1.1.2 维度表 (Dimension Table)2.1.1.3 维度 (Dimension)2.1.1.4 度量 (Measure) 2.1.2 维度建模的主要模型2.1.2.1 星型模型 (Star Schema)2.1.2.2 雪花模型 (Snowflake Schema)2.1.2.3 星…...
Tomcat 漏洞
一.CVE-2017-12615 1.使用burp抓包 把get改成put jsp文件后加/ 添加完成后访问 木马 然后木马的网址 在哥斯拉测试并且添加 添加成功 然后我们就成功进去啦、 二.弱口令 点击后输入默认用户名、密码:tomcat/tomcat 登陆之后上传一个jsp文件 后缀改成war 然后访问我…...
分布式消息队列Kafka
分布式消息队列Kafka 简介: Kafka 是一个分布式消息队列系统,用于处理实时数据流。消息按照主题(Topic)进行分类存储,发送消息的实体称为 Producer,接收消息的实体称为 Consumer。Kafka 集群由多个 Kafka 实…...
C# Unity 面向对象补全计划 七大原则 之 迪米特法则(Law Of Demeter )难度:☆☆☆ 总结:直取蜀汉
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识,看不懂没关系 请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺 1.迪米特法则(…...
【C++】—— 类与对象(四)
【C】—— 类与对象(四) 6、赋值运算符重载6.1、运算符重载6.1.1、基础知识6.1.2、调用方法6.1.3、前置 与 后置 的重载6.1.4、注意事项6.1.5、<< 和 >> 运算符重载6.1.5.1、<< 和 >> 基础6.1.5.2、日期类 operator<< 的实…...
Qwen3-TTS-12Hz-1.7B-Base应用场景:智能音箱多语种交互语音引擎升级
Qwen3-TTS-12Hz-1.7B-Base应用场景:智能音箱多语种交互语音引擎升级 重要提示:本文仅讨论技术实现方案,所有内容均基于公开技术文档和测试数据,不涉及任何政治敏感内容,完全符合内容安全规范。 1. 智能音箱语音交互的现…...
koanf自定义Provider开发:扩展你的配置源终极指南
koanf自定义Provider开发:扩展你的配置源终极指南 【免费下载链接】koanf Simple, extremely lightweight, extensible, configuration management library for Go. Supports JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper. 项目地址…...
升级版会议纪要录音转文字工具 识别准转得快 整理省事体验好
前前后后踩过不下10款录音转写工具的坑,要么错字多到要逐行改,要么转出来的内容逻辑混乱,得花好几个小时捋顺,直到用到2026升级版的会议纪要录音转文字工具,才真的感受到什么叫识别准、转得快、整理省事体验好。今早开…...
经验值|React 实时数据图表性能为什么会越来越卡?
在使用 React 和 Highcharts 创建实时图表时,性能下降通常与以下几个因素有关:频繁更新状态:如果你频繁更新图表的数据状态,React 可能会进行多次重渲染,导致性能下降。建议使用 useRef 来引用图表实例,避免…...
08_Claude Code之高级工作流与自动化:循环、调度与并行批处理
08 Claude Code之高级工作流与自动化:循环、调度与并行批处理 Claude Code 的真正价值在于自动化能力,而不仅仅是对话工具。本文深度讲解 Plan Mode 的量化对比(多文件重构成功率从62%到89%)、非交互批处理脚本、并行处理架构、CI…...
MoveIt2新手必看:如何正确选择安装分支(main vs. tutorials)及使用vcs管理多仓库
MoveIt2分支选择与多仓库管理实战指南 当你在ROS2生态中开始使用MoveIt2时,第一个拦路虎往往不是算法理解或代码编写,而是如何正确搭建开发环境。MoveIt2作为由数十个独立Git仓库组成的复杂项目,其分支管理和版本协同问题困扰着许多中级开发者…...
别再死记硬背了!用74HC系列CMOS芯片,手把手带你理解逻辑门电平与噪声容限
74HC系列CMOS芯片实战:从数据手册到面包板的逻辑门电平全解析 当你在深夜调试一块74HC04反相器搭建的振荡电路时,示波器上本该清晰的方波却出现了毛刺和畸变——这种场景对电子爱好者来说再熟悉不过。本文将以74HC系列CMOS芯片为核心,通过五…...
FPU 检测技术:从 8086 到 286 的演进与挑战跨越
【导语:本文围绕 FPU 检测技术展开,从 8086 到 286 及后续 CPU 的 FPU 检测工作原理进行深入探讨,揭示了技术演进中的变化、难点及实际应用情况,对理解早期计算机浮点运算相关技术有重要意义。】8086 时代 FPU 检测的独特设计在 8…...
如何用Awesome-Obsidian打造个性化知识管理神器:终极美化指南
如何用Awesome-Obsidian打造个性化知识管理神器:终极美化指南 【免费下载链接】awesome-obsidian 🕶️ Awesome stuff for Obsidian 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-obsidian 想要将Obsidian从简单的Markdown编辑器变身为功…...
窗口总乱跑?PersistentWindows让你的桌面布局稳如泰山
窗口总乱跑?PersistentWindows让你的桌面布局稳如泰山 【免费下载链接】PersistentWindows fork of http://www.ninjacrab.com/persistent-windows/ with windows 10 update 项目地址: https://gitcode.com/gh_mirrors/pe/PersistentWindows 多显示器用户和远…...
