37.x86游戏实战-XXX遍历怪物数组

news2024/11/15 7:23:14

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

本次游戏没法给

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

工具下载:

链接: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的方式来得到基址


img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0812|TCP和UDP跨主机通信

思维导图 TCP实现跨主机通信 服务器端 #include<myhead.h> #define SER_PORT 6666 //端口号 #define SER_IP "192.168.0.108" //服务器IP int main(int argc, const char *argv[]) {//创建套接字文件int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd -1){pe…

进阶!haproxy高级功能与配置

文章目录 前言基于cookie的会话保持IP透传四层IP透传未开启状态开启透传状态 七层IP透传 自定义错误界面重定向HAProxy 四层负载之数据库HAProxy https 前言 本文主要介绍HAProxy高级配置及使用案例 文章相关连接如下&#xff1a; 如果想深入了解haproxy算法的相关知识&…

基于Python+Django+Vue+Mysql前后端分离的图书管理系统

利用空闲休息时间开始自己写了一套图书管理系统。现将源码开源&#xff0c;项目遇到问题 PythonDjangoVue图书管理系统开发全流程 大家好&#xff0c;我是程序员科科&#xff0c;这是我开源的基于PythonDjangoVue的图书管理系统 希望可以帮助想学前后端分离的同学 项目中遇…

积极创新模式,推动智慧场馆建设

智慧场馆是指基于信息技术应用的场馆建设模式&#xff0c;利用物联网、云计算、大数据分析等技术手段&#xff0c;实现场馆资源的管理优化、运营效率的提升以及用户体验的改善。智慧场馆在我国得到了广泛的政策支持和推动&#xff0c;政府出台了一系列鼓励智慧场馆建设的政策措…

Java SIP Client

采用JAIN SIP API实现一个SIP客户端实现向SIP服务器注册。SIP服务器可以为FreeSWITCH也可以为满足GB28181的SIP平台。话不多说直接看注册流程图&#xff1a; 代码实现&#xff1a; 创建maven工程添加依赖 <dependencies><dependency><groupId>javax.sip</…

Apple Maps现在可在Firefox和Mac版Edge浏览器中使用

Apple Maps最初只能在 Windows 版 Safari、Chrome 浏览器和 Edge 浏览器上运行&#xff0c;现在已在其他浏览器上运行&#xff0c;包括 Mac 版 Firefox 和 Edge。经过十多年的等待&#xff0c;Apple Maps于今年 7 月推出了新版地图应用的测试版&#xff0c;但只能在有限的浏览器…

哈希表 - 三数之和

15. 三数之和 方法一&#xff1a;排序双指针 /*** param {number[]} nums* return {number[][]}*/ var threeSum function(nums) {const res [], len nums.length;// 将数组排序nums.sort((a, b) > a - b)for (let i 0; i < len; i) {let l i 1, r len - 1, iNum…

什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭 &#xff0c;更多大厂常问面试题&#xff0c;可以点击下面的小程序进行阅读哈&#xff01; 目前这个面试刷题小程序刚出&#xff0c;有网页和小程序双端可以使用&#xff01; 回归面试题…

网络初学者必备:100个基础知识全掌握

网络安全学习路线 如果你对网络安全入门感兴趣&#xff0c;那么你需要的话可以点击这里网络安全重磅福利&#xff1a;入门&进阶全套282G学习资源包免费分享&#xff01; 或者扫描下方csdn官方合作二维码获取哦&#xff01; 1 什么是链接? 链接是指两个设备之间的连接。…

OpenCV 基本使用

OpenCV 基本使用 参考教程&#xff1a; GitHub - gaoxiang12/slambook2: edition 2 of the slambook 1. 安装 OpenCV 1.1 下载 OpenCV 参考教程&#xff1a; 无法定位软件包libjasper-dev的解决办法-CSDN博客 视觉slam14讲ch5 opencv安装 ubuntu20.04_libvtk5-dev-CSDN博…

机器学习——聚类算法K-Means

目录 一、初识聚类 1. 认识聚类算法 2. 聚类的流程 3. 簇内误差平方和 Inertia越小模型越好吗&#xff1f; 二、KMeans介绍 1. 重要参数n_clusters 2. 模型评估指标 &#xff08;1&#xff09;真实标签己知的时候 &#xff08;2&#xff09;真实标签未知的时候 三、s…

Tomcat 最大连接数实现原理

spring boot 内置tomcat设置连接数 max-connections: 5 server:port: 9898servlet:context-path: /testtomcat:connection-timeout: 5000max-connections: 5accept-count: 5 ##初始化连接数量connectionLimitLatch protected LimitLatch initializeConnectionLatch() {if (ma…

【区块链+食品安全】农业产业全过程溯源云平台 | FISCO BCOS应用案例

近年来&#xff0c;食品安全问题频发&#xff0c;尤其疫情期间&#xff0c;海鲜、冷冻畜牧产品的入口安全成为大众关注焦点&#xff0c;追溯、确保相关产品生产、运输、售卖等环节的信息真实、有效&#xff0c;成为保证食品安全的核心环节。浙江天演维真网络科技股份有限公司基…

基于ICMP(Ping)的多线程网络通道监视程序(QT)开发

基于ICMP(Ping)的多线程网络通道监视程序(QT)开发 1、 ICMP原理简介 可参考 ICMP(Ping)功能原理及其C实现简介 。 2、 网络通道监视程序开发 设计原理&#xff1a; 通过PING 功能实现服务器、交换机、网闸等设备的网络检测&#xff0c;判断网络的否可达和TTL计算 。 具备功…

微深节能 库区智能化无人天车管理系统 格雷母线

格雷母线在库区智能化无人天车管理系统的应用中&#xff0c;发挥了至关重要的作用。 一、系统构成与原理 系统构成&#xff1a; 格雷母线高精度位移测量系统主要由格雷母线、天线箱、地址解码器、地址编码器四个核心部分组成。这些组件协同工作&#xff0c;实现对移动设备的精确…

c++41两头堵模型

直接拷到自己的内存空间 字符串反转 递归&#xff1a;参数的入栈模型 函数的调用模型 先被调用的模型后执行 向局部变量拷贝内存 传两个参数 做函数结果

【解析几何笔记】1.课程介绍与要求

听的是B站UP主唐小谦的解析几何课&#xff0c;万年的老计算机专业人也想学数学OWO。 1. 课程介绍与要求 前面都是老师的课程介绍&#xff0c;从板书证明开始记 【证明】在三角形ABC中&#xff0c;D为BC边的中点&#xff0c;证明&#xff1a; ∠ ABC 9 0 ∘ \angle \text{ABC…

出现 AWS ECS 错误:集群中未找到容器实例处理办法?

使用部署docker容器映像&#xff0c;但未创建 EC2 实例的情况下。出现下面错误提示。 “调用 RunTask 操作时发生客户端错误 (InvalidParameterException)&#xff1a;在您的集群中未找到容器实例。” 经过以下的步骤&#xff1a; 1.将 Docker 映像从 Ubuntu 推送到我的 Amazo…

c++ - 特殊类设计

文章目录 一、设计一个不允许拷贝的类二、设计一个只能在堆上实例对象的类三、设计一个只能在栈上创建对象的类四、设计一个不能被继承的类五、设计一个只能创建一个对象的类&#xff08;单例模式&#xff09; 一、设计一个不允许拷贝的类 1、方法一&#xff1a;将拷贝构造和赋…

在Windows上配置VSCode MinGW+CMake(包括C++多线程编程的两套API:posix和win32)

创建目录 首先&#xff0c;需要电脑上安装VSCode, 并且创建三个文件夹&#xff1a;cmake、MinGW-posix、MinGW-w32 文件下载 下载posix-seh posix和win32分别是c多线程变成的两套API,可根据不同需求安装&#xff0c;现在先下载配置环境需要的几个文件 百度搜索MinGW-64 点…