28.第二阶段x86游戏实战2-遍历周围-通过附近NPC怪物血量的方式(初识vm代码)

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

本次游戏没法给

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

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:27.第二阶段x86游戏实战2-遍历周围NPC跳出递归循环

上一个内容中通过使用附近NPC的名字去附近NPC列表失败了,找到一个递归循环中,路线就断了,本次再使用其它方式进行查找附近NPC列表

这次通过附近怪物血量追,首先打开游戏打开CE,并使用CE附加到游戏

首先找一个旗鼓相当的怪物,别一下把怪物打死了,或别被怪物打死了,然后打怪物的时候它是有一个百分比的,有百分比的数据一般都是小数,所以使用CE搜索浮点数类型的初始值,如下图

首次扫描完会有很多,如下图

然后来到游戏打一下怪物,让血量变少,然后使用减少的数值再次扫描

再次扫描完结果就会变少了

然后不要打怪物,使用未变动的数值再次扫描

然后结果又会变少,现在就重复上面的步骤打怪物用减少,不打怪物用未变动的数值,操作上几次

最终有三个特别像百分比,如下图红框,怪物血量也差不多还剩百分之20左右

然后修改它们的值,如果修改对了,怪物血量会有变化,如下图修改成1,怪物就会满血,1就是百分之百的血量

然后现在找到一个内存地址了,然后打开OD开始使用硬件写入断点去找,如下图下硬件写入断点

下完硬件写入断点之后,回到游戏打一下怪物,让它触发断点,然后就回来的下图红框位置,记得把硬件写入断点删除

然后有时候硬件断点会在多个位置断下来,所以需要多次硬件断点看看在什么位置断下来的几率大,哪个断下来的几率打就先用哪个,下图硬件断点多次进入,上图硬件断点就进入了一次,所以就用下图中的代码

开始分析代码,xmm0是一个寄存器xmm开头的寄存器专门用来存放小数的,如下图红框,血量的位置是eax+0x8位置,然后eax来自于esi+0x10,然后esi的值来自于ecx,所以要往上找一层

然后在下图红框位置打断点(有时候硬件断点和普通断点CTRL+F9的位置会不一样,这里先尝试普通断点,如果普通断点追着费劲再尝试打硬件写入断点)

CTRL+F9之后,回来到下图位置,可以发现下图红框的代码我们没法读,这说明来到了一个关键的地方,游戏开发者把这块代码进行了vm、代码混淆,本次到这也失败了,下一次再继续


相关推荐
C+++Python3 小时前
详细介绍一下Java泛型的通配符
java·windows·python
能喵烧香3 小时前
深度解析:Linux 与 Windows 超级权限账户的本质差异
linux·windows
caimouse7 小时前
Reactos 第 7 章 视窗报文 — 7.5 视窗报文的发送
windows
callJJ11 小时前
Volta + Claude Code 在 Windows 上的路径 Bug 复盘
windows·bug
女神下凡12 小时前
这是 Cursor(Composer) 的五种核心交互模式
服务器·人工智能·windows·vscode·microsoft
techdashen12 小时前
从 Windows 的 ping.exe 入手:动态库、调用约定与 Rust FFI
开发语言·windows·rust
独隅12 小时前
IntelliJ IDEA 在 Windows 上的完整安装与使用指南
java·windows·intellij-idea
逻极12 小时前
Windows 平台 Ollama AMD GPU 一键编译指南:基于 ROCm 7.1 的自动化实战
人工智能·windows·stm32·自动化·gpu·amd·ollama
caimouse13 小时前
Reactos 第 9 章 设备驱动 — 9.13 同步I/O与异步I/O
windows
caimouse13 小时前
Reactos 第 9 章 设备驱动 — 9.10 磁盘的Miniport驱动模块
windows·嵌入式硬件