15.第二阶段x64游戏实战-分析怪物血量(遍历周围)

news2025/4/23 12:16:33

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

本次游戏没法给

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

上一个内容:14.第二阶段x64游戏实战-分析人物的名字

如果想实现自动打怪,那肯定要得到周围的信息,然后找到怪物,然后去打,这个周围怪物的信息就包含怪物的对象、怪物的坐标、怪物的名字、怪物的血量等,还有自动采药采坑,也是要得到周围的数据得到药的信息矿的信息

该怎样去找呢?游戏它本身是需要显示周围的东西比如附近的怪物它可能还在动,那为什么可以看到怪物可以看到怪物在动?因为游戏它本身就一直在获取周围的信息,也只有这样才能显示给我们看。

所以说游戏本身它就会有一个线程一直获取周围信息,所以就可以找一个切入点去追这个线程,就会找到一个结构,一般来讲就是这个情况,然后这个结构里就会存放着周围信息(周围怪物的信息、周围药的信息、周围矿的信息、周围NPC的信息、宝箱、宠物等),这个结构可能是链表结构、二叉树结构、链表和数组、链表和二叉树等,具体是什么还是要去游戏里的代码中找一找,然后看看是什么结构,然后我们自己把这个结构搞出来。

切入点使用打怪物,让怪物血量变少的方式来找,这里要注意有的游戏它不显示血量只显示一个红色的条,这样的一般使用百分比来表示怪物血量的

下面开始找,首先打开CE,并附加受害者,游戏角色来到有怪物的地方,这里注意把加攻击的装备卸掉,免得几下把怪物打死了,然后把加防御的装备穿上,防止怪物把我们打死了,然后先使用未知的初始值和4字节进行首次扫描

首次扫描完成

然后打一下怪物,然后使用减少的数值再次扫描

扫描完结果就变少了

然后不打怪物,使用未变动的数值再次扫描,然后就重复打怪物减少的数值,不打怪物未变动的数值再次扫描就行了

最后剩下6个,但是看着数值都很大,不像是血量

右击选择单浮点

然后就正常了,0.3的就是血量了,表示血量还剩百分之30

也可以在最开始扫描的时候在下图红框位置选择单浮点

然后开始修改值,看看哪一个是怪物的血量,通过修改(修改的方式前面有,就是双击数值列的数据)发现下图红框的是血量,改成1之后怪物的血量显示是满的

找到血量的地址之后开始找基址,然后就是打开x64dbg,然后CTRL+G跳转到血量的地址,如下图红框

然后设置硬件断点,写入的硬件断点

设置好之后打怪物,就来到了下图红框位置

然后使用内存窗口验证地址,如下图红框rax+0x8位置访问的怪物血量

然后删除硬件断点

这里要注意,网络游戏打怪物是通过数据包完成的,也就是说上面卡主了,事实上我们还在打怪,因为发送网络数据包的位置没有被卡主,上面的代码只是用来显示到屏幕上的,所以会发现按F9让代码跑起来会发现怪物死了

然后开始分析代码,附近怪物血量是rax+0x8

rax的值来自于下图红框,rcx+0x18,现在的公式[rcx+0x18]+0x8

然后看不到rcx在哪来的了,所以rcx来自于上一层

在下图红框位置打断点

然后打别的怪物触发断点

然后来到下图位置,这里就可以证实一件事了,之前x86的游戏它这一层是有花指令保护的,可以看到x64的版本就没有了,这里就证明了x64比x86好分析了

然后继续分析rcx来自于r14,现在的公式[r14+0x18]+0x8,然后再找r14的值哪来的

鼠标滚轮往上翻了很久看到下图红框的代码,这里要注意上面有一个je跳转指令,这里要断点一下看看r14的值不是下图红框位置来的

设置断点

打怪物触发了断点,这说明r14的值就来自于rsi+0x1B0,现在的公式[[rsi+0x1B0]+0x18]+0x8,然后找rsi的值哪来的

如下图红框rsi的值来自于rax,上面还有一个call说明rax的值是call的返回值,现在的公式[[rax+0x1B0]+0x18]+0x8

设置断点

打怪触发断点

取消断点

然后按F7进入到call里面

一路F8,发现是个循环

循环的头和尾

一路F8最终执行到了下图红框位置,现在的公式[[[rax+0x28]+0x1B0]+0x18]+0x8

然后按F9,让代码运行起来,然后来到x64dbg按减号(键盘字母上面0后面的减号)往上一行一行的返回,看看rax的值哪来的,rax的值来自于[rax],现在的公式[[[[rax]+0x28]+0x1B0]+0x18]+0x8,然后再按减号继续找rax

rax的值来自于下图红框位置,注意这里的指令是lea,lea是取内存地址,也就是rsp+0x8的地址现在的公式[[[[[rsp+0x8]]+0x28]+0x1B0]+0x18]+0x8

再按减号,发现代码来到了下图红框位置,所以rsp+0x8的值并不是来自于r8

继续按减号发现rsp+0x8的值来自于rcx,现在的公式[[[[[rcx]]+0x28]+0x1B0]+0x18]+0x8

然后看到rcx的值来自于rax,现在的公式[[[[[rax]]+0x28]+0x1B0]+0x18]+0x8

rax的值来自于下图红框位置,现在的公式[[[[[[rax+0x10]]]+0x28]+0x1B0]+0x18]+0x8

然后剩下的就是下图红框位置给rax赋值了,现在的公式[[[[[[[r8+0x8]+0x10]]]+0x28]+0x1B0]+0x18]+0x8

然后r8的值来自于rcx+0x80,现在的公式[[[[[[[[rcx+0x80]+0x8]+0x10]]]+0x28]+0x1B0]+0x18]+0x8

然后一路按减号回到上一层找rcx,可以看到rcx来自于基址了,现在就找到了怪物列表基址,现在的公式[[[[[[[[[0x00007FF69E23EE38]+0x80]+0x8]+0x10]]]+0x28]+0x1B0]+0x18]+0x8,这里有一件事要注意继续往下看

下图红框位置也给rax进行了赋值,循环第一次进就会执行下图红框的赋值,这里就还有一个公式[[[[[[[[[0x00007FF69E23EE38]+0x80]]+0x10]]]+0x28]+0x1B0]+0x18]+0x8

[[[[[[[[[0x00007FF69E23EE38]+0x80]]+0x10]]]+0x28]+0x1B0]+0x18]+0x8

[[[[[[[[[0x00007FF69E23EE38]+0x80]+0x8]+0x10]]]+0x28]+0x1B0]+0x18]+0x8

这是一个二叉树结构,下一章写二叉树结构

[[[[[[[[[0x00007FF69E23EE38]+0x80]]+0x10]]]+0x28]+0x1B0]+0x18]+0x8 左边的树

[[[[[[[[[0x00007FF69E23EE38]+0x80]+0x8]+0x10]]]+0x28]+0x1B0]+0x18]+0x8 右边的树

偏移93EE38


img

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

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

相关文章

HarmonyOS 基础语法概述 UI范式

ArkUI框架 - UI范式 ArkTS的基本组成 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中Entry、Component和State都是装饰器,Component表示自定义组件,Entry表示该自定义组件为入口组件,Stat…

专题讨论2:树与查找

在讨论前先回顾一下定义: BST树的定义 二叉搜索树是一种特殊的二叉树,对于树中的任意一个节点: 若它存在左子树,那么左子树中所有节点的值都小于该节点的值。 若它存在右子树,那么右子树中所有节点的值都大于该节点…

django之数据的翻页和搜索功能

数据的翻页和搜素功能 目录 1.实现搜素功能 2.实现翻页功能 一、实现搜素功能 我们到bootstrap官网, 点击组件, 然后找到输入框组, 并点击作为额外元素的按钮。 我们需要使用上面红色框里面的组件, 就是搜素组件, 代码部分就是下面红色框框出来的部分。 把这里的代码复制…

unity脚本-FBX自动化模型面数校验

根据目前模型资源平均面数预算进行脚本制作,自动化校验模型面数是否符合规范。 *注:文件格式为.cs。需要放置在unity资源文件夹Assets>Editor下。 测试效果(拖一个fbx文件进unity时自动检测): 以下为完整代码 us…

C++用于保留浮点数的两位小数,使用宏定义方法(可兼容低版本Visual Studio)

文章目录 一、 描述二、 样例二、 结果输出 一、 描述 这个宏定义(可放入.h头文件里)使用基本的数学运算,几乎兼容所有版本的VS,以下可对正数做四舍五入: #define ROUND_TO_TWO(x) ( (floor((x) * 100 0.5) / 100) …

(51单片机)LCD显示温度(DS18B20教程)(LCD1602教程)(延时函数教程)(单总线教程)

演示视频: LCD显示温度 源代码 如上图将9个文放在Keli5 中即可,然后烧录在单片机中就行了 烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频: 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.…

服务器运维:服务器流量的二八法则是什么意思?

文章目录 用户行为角度时间分布角度应用场景角度 服务器流量的二八法则,又称 80/20 法则,源自意大利经济学家帕累托提出的帕累托法则,该法则指出在很多情况下,80% 的结果是由 20% 的因素所决定的。在服务器流量领域,二…

【LeetCode】嚼烂热题100【持续更新】

2、字母异位词分组 方法一&#xff1a;排序哈希表 思路&#xff1a;对每个字符串排序&#xff0c;排序后的字符串作为键插入到哈希表中&#xff0c;值为List<String>形式存储单词原型&#xff0c;键为排序后的字符串。 Map<String, List<String>> m new Ha…

赛灵思 XC7K325T-2FFG900I FPGA Xilinx Kintex‑7

XC7K325T-2FFG900I 是 Xilinx Kintex‑7 系列中一款工业级 (I) 高性能 FPGA&#xff0c;基于 28 nm HKMG HPL 工艺制程&#xff0c;核心电压标称 1.0 V&#xff0c;I/O 电压可在 0.97 V–1.03 V 之间灵活配置&#xff0c;并可在 –40 C 至 100 C 温度范围内稳定运行。该器件提供…

k8s-1.28.10 安装metrics-server

1.简介 Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上KubeletAPI收集指标&#xff0c;通过Kubernetes聚合器注册在Master APIServer中。为集群提供Node、Pods资源利用率指标。 2.下载yaml文件 wget https:/…

基于外部中中断机制,实现以下功能: 1.按键1,按下和释放后,点亮LED 2.按键2,按下和释放后,熄灭LED 3.按键3,按下和释放后,使得LED闪烁

题目&#xff1a; 参照外部中断的原理和代码示例,再结合之前已经实现的按键切换LED状态的实验&#xff0c;用外部中断改进其实现。 请自行参考文档《中断》当中&#xff0c;有关按键切换LED状态的内容, 自行连接电路图&#xff0c;基于外部中断机制&#xff0c;实现以下功能&am…

【我的创作纪念日】 --- 与CSDN走过的第365天

个人主页&#xff1a;夜晚中的人海 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&#xff0c;无以成江海。-《荀子》 文章目录 &#x1f389;一、机缘&#x1f680;二、收获&#x1f3a1;三、 日常⭐四、成就&#x1f3e0;五、憧憬 &#x1f389;一、机缘 光阴似箭&am…

鸿蒙生态新利器:华为ArkUI-X混合开发框架深度解析

鸿蒙生态新利器&#xff1a;华为ArkUI-X混合开发框架深度解析 作者&#xff1a;王老汉 | 鸿蒙生态开发者 | 2025年4月 &#x1f4e2; 前言&#xff1a;开发者们的新机遇 各位鸿蒙开发者朋友们&#xff0c;是否还在为多平台开发重复造轮子而苦恼&#xff1f;今天给大家介绍一位…

‌信号调制与解调技术基础解析

调制解调技术是通信系统中实现基带信号与高频载波信号相互转换的主要技术&#xff0c;通过调整信号特性使其适应不同信道环境&#xff0c;保障信息传输的效率和可靠性。 调制与解调的基本概念 调制&#xff08;Modulation&#xff09;‌ 将低频基带信号&#xff08;如语音或数…

【扫描件批量改名】批量识别扫描件PDF指定区域内容,用识别的内容修改PDF文件名,基于C++和腾讯OCR的实现方案,超详细

批量识别扫描件PDF指定区域内容并重命名文件方案 应用场景 本方案适用于以下场景: 企业档案数字化管理:批量处理扫描的合同、发票等文件,按内容自动分类命名财务票据处理:自动识别票据上的关键信息(如发票号码、日期)用于归档医疗记录管理:从扫描的检查报告中提取患者I…

序列决策问题(Sequential Decision-Making Problem)

序列决策问题&#xff08;Sequential Decision-Making Problem&#xff09;是强化学习&#xff08;Reinforcement Learning, RL&#xff09;的核心研究内容&#xff0c;其核心思想是&#xff1a;​​智能体&#xff08;Agent&#xff09;需要在连续的时间步骤中&#xff0c;通过…

L2-1、打造稳定可控的 AI 输出 —— Prompt 模板与格式控制

一、为什么需要 Prompt 模板&#xff1f; 在与 AI 模型交互时&#xff0c;我们经常会遇到输出不稳定、格式混乱的问题。Prompt 模板帮助我们解决这些问题&#xff0c;通过结构化的输入指令来获得可预测且一致的输出结果。 模板的作用主要体现在&#xff1a; 固定输出格式&am…

LLM中什么是模板定义、提示工程和文档处理链

LLM中什么是模板定义、提示工程和文档处理链 定义提示模板(prompt_template):prompt_template = """Use the following pieces of context to answer the question at the end. If you dont know the answer, just say that you dont know, dont try to make…

密码学(二)流密码

2.1流密码的基本概念 流密码的基本思想是利用密钥 k 产生一个密钥流...&#xff0c;并使用如下规则对明文串 ... 加密&#xff1a;。密钥流由密钥流发生器产生&#xff1a; &#xff0c;这里是加密器中的记忆元件&#xff08;存储器&#xff09;在时刻 i 的状态&#xff0c…

力扣第446场周赛

有事没赶上, 赛后模拟了一下, 分享一下我的解题思路和做题感受 1.执行指令后的得分 题目链接如下&#xff1a;力扣 给你两个数组&#xff1a;instructions 和 values&#xff0c;数组的长度均为 n。 你需要根据以下规则模拟一个过程&#xff1a; 从下标 i 0 的第一个指令开…