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、代码混淆,本次到这也失败了,下一次再继续


相关推荐
晨枫阳1 小时前
不同语言数组详解
linux·服务器·windows
s***4532 小时前
【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
windows·分布式·rabbitmq
IT小哥哥呀12 小时前
如何从 Windows SSH 进入 VirtualBox Ubuntu 虚拟机——密码认证(逐步指南)
linux·windows·ubuntu·ssh·教程·虚拟机
XI锐真的烦12 小时前
Flutter Windows 下“Running Gradle task ‘assembleDebug‘...” 卡住一整天的终极解决办法
windows·flutter
神秘人-解说14 小时前
在Mac上安装Windows 11/10双系统(M1/M2/Intel通用)
windows·macos·mac安装双系统·mac安装虚拟机·mac安装windows
人工智能训练14 小时前
Windows中如何将Docker安装在E盘并将Docker的镜像和容器存储在E盘的安装目录下
linux·运维·前端·人工智能·windows·docker·容器
k***921616 小时前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
q***925117 小时前
PHP搭建开发环境(Windows系统)
开发语言·windows·php
IccBoY17 小时前
将idea快捷打开加入到鼠标右键
windows·intellij-idea·idea
WXDcsdn17 小时前
联想台式机更换硬盘(Win10转Win7)后鼠标和键盘无法使用
运维·windows·it运维