利用CheatEngine工具Ultimap功能对抗游戏数据加密以及拓展

前言:

昨天有个网友问我,游戏加密了咋办,我当时就震精了。加密了?干他啊!安排,必须安排!那么今天就给大家分享几个游戏数据加密的逆向方法!

步入主题:这款游戏叫做战地X盟,是一款小型FPS网络射击游戏,别看游戏小,“麻雀虽小,五脏俱全”,这个游戏也不例外,各种数据都不能让你好好逆向。

第一步,上游戏,我们拿游戏人物的子弹数量开刀,话说,大家都是这么开刀的吧,那我也开刀了:

[七颗子弹搜索七]:

还不错,有数据,那我们继续干:

[五颗子弹搜索五]:

甚好甚好,还有数据,那我们继续筛选:

[四颗子弹搜素四]:

这...有点难为人啊,于是乎,我就把所有的数据类型都试验了一个遍,依然没有数据:

搞到这里,我们必须要意识到一个问题,那就是:这个游戏数据真的被加密了!那么我们现在不妨讲一下游戏的数据加密吧:

游戏数据加密:顾名思义,就是游戏的数据被加密了呗,你还想让我咋解释...整那些乱七八糟的名词真的没必要,搞的大家都听不懂

游戏加密的后果:还能有啥后果,后果就是让你逆向不出来呗,还能咋地...

那么对抗的方法呢,来了,老弟~:

对抗方法①之闷头撞墙法:什么意思呢,游戏数据加密,我们首先要猜测子弹数量数量是不是把数据类型改掉了,比如按照常理应该是整数型,结果这个程序员脑袋一机灵改成了浮点型也是有可能的,然后我们就挨个的切换数据类型扫描减少增加,这个方法我试过了,脑门都起了好几个大包了,没找到,所以果断放弃,会出人命的!

对抗方法②之佛系未知法:意思就是我们先扫描未知的初始值,然后开枪,搜索变动,不开枪搜索未变动,听不懂是吧,来我们演示下:

[先搜索未知的初始值]:

[开枪搜索变动,不开枪搜索不变动]:

然后,最后还真的找到几个跟随子弹数量变动的地址:

但是只要你修改或者锁定就知道都是没有效果的,甚至还会崩溃,而且我们还不知道哪个是关键的数据,这就很头痛了...

加密就意味着,子弹数量的数据每次开枪变动都遵循着加密的算法,可能被放大或者缩小,或者遵循着某个算法而变大或缩小

那么问题就来了,我们怎么解决呢?其实按照上面找出的地址也是可以逆向的,但是太繁琐了,我们不如找点简单的方法,那就是Ultimap!

先来讲讲这是个什么东西:

说白了,这就是个代码执行过滤的工具,可以通过该工具找到某个时刻执行或者没执行的代码,于是乎,我们就可以找到开枪攻击的关键代码或者Call

那么,怎么开启这个工具呢?第一点,加载DBVM,唉,等等,怎么又多出来一个DBVM,这又是个什么东西?

开讲了,开讲了!什么是DBVM!

官方解释:https://www.cheatengine.org/aboutdbvm.php

DBVM是一个虚拟机,它将运行您的操作系统并扩展指令集以允许用户模式应用程序访问kernelmode。它允许程序将系统事件流重定向到不同的位置并更改其结果。(例如,在不编辑中断表的情况下将中断重定向到不同的中断处理程序)

Cheat Engine可以利用这些添加的指令来简化游戏修改和调试。特别是在Vista 64中。要使用它,只需使用DBVM启动,然后启动操作系统,通常是Windows,Cheat Engine将自动检测DBVM是否已加载并使用添加的功能。

安全性:恶意软件可以使用DBVM。因此,它需要一个64位长的密钥才能使用这些指令。其中一条说明是将默认密钥更改为其他密钥,以便其他程序在没有正确密钥的情况下无法使用它。

请注意,DBVM的当前实现要求您的cpu支持intel-vt指令集。对于AMD版本,请捐出足够的钱,以便我可以购买AMD系统来测试AMD的特定代码。

找出您的系统是否支持dbvm的一种简单方法是在CE徽标上点击以显示about屏幕。它会告诉您系统是否有能力。如果您实际上已经加载了dbvm,它甚至会告诉您正在运行的dbvm的哪个版本.

也就是说,不管他是什么东西,用UltiMap工具就必须开启dbvm

开启方法:

①:打开帮助界面

②:提示支持DBVM然后点击一下绿色的字

③:出来提示点击OK就可以了

相关文章参考: https://wiki.cheatengine.org/index.php?title=DBVM

然后我们就要开启Ultimap工具了!!!激动人心的时刻!!!

第一步:打开内存浏览器

第二步:点击Ultimap

然后我们进游戏,拿起枪,点击start:

开一枪,然后点击第二步的按钮:意思就是代码执行了,因为开枪了,开枪相关的代码肯定得执行

不开枪随便走两步,点击未执行的代码:

继续开枪,搜索执行的代码:

以此类推,通过我手动的过滤,还剩下175个地址:

然后我们点击下面的show,也就是显示过滤的结果

然后显示出来了,还有计数:

这边是极其重要的,因为我们开了四枪,所以相关的代码也应该执行了四次!

因此,我们把所有执行4次的代码,拷贝下来进行分析:

通过修改相关逻辑,最终实现了“无限子弹”,当然了,是自wei的,哭了,因为是网络游戏,所以子弹数量跟服务器是交互的哦~

具体的内存地址不放出来了,太敏感,而且有些人也可能会拿去做坏事~

这篇文章呢,只是讲解Ultimap工具,它是一个可以过滤代码执行的强大工具

拓展:

1.人物穿墙的碰撞检测

2.子弹穿墙的碰撞检测

3.各种内存call:比如攻击call,寻路Call

4.按钮等控件call

猜你喜欢

转载自blog.csdn.net/THMAIL/article/details/106073857
今日推荐