安卓逆向Unity3D游戏层叠xx破解

Posted Sp软件服务

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓逆向Unity3D游戏层叠xx破解相关的知识,希望对你有一定的参考价值。

今天下午吃完饭没事干,下了一个叫层叠xx的游戏,这个游戏就是把各种图形叠加在一起,叠加的部分会变成反色,要组合成他规定的图形,很考验想象力。我一下就玩到了30关,结果出现下面的提示:

这就让人很不爽了,非要加他的群激活才能让继续玩,估计找他们激活得交钱,搞得这么麻烦,于是我准备花一分钟逆向这个游戏。

首先载入jadx,发现这是一个Unity3D引擎做的游戏:

【安卓逆向】Unity3D游戏层叠xx破解

学过U3D开发的应该都知道,游戏的代码都被编译在assets\bin\Data\Managed\Assembly-CSharp.dll中,我们只需要反编译这个文件即可。

【安卓逆向】Unity3D游戏层叠xx破解

代码结构很清晰,没有被加密,省去了我们不少时间。

接下来我们就需要寻找验证代码的所在地方。

怎么定位呢?可以有很多思路,比如搜索激活的英文关键字、搜索随机函数等等,这里介绍一种快速定位的方法。

【安卓逆向】Unity3D游戏层叠xx破解

我们发现他的激活码是根据下方的随机码计算的,而这个随机码应该是第一次运行后就生成,然后保存在本地的。

安卓开发中保存数值,一般都用sharedpreferences类。

我们看看这个游戏的sharedpreferences文件:

【安卓逆向】Unity3D游戏层叠xx破解

其中的randomIntKey保存了随机码,我们可以直接搜索randomIntKey字符串:

【安卓逆向】Unity3D游戏层叠xx破解

找到调用的地方:

【安卓逆向】Unity3D游戏层叠xx破解

这里代码很简单,使用了RandomInt函数生成一个随机数,并保存在Prefs中。

接下来点右键-分析,查看哪里调用了这个方法:

【安卓逆向】Unity3D游戏层叠xx破解

定位到CheckJiHuoMa,根据名字我们可以猜测是判断激活码是否正确的方法。

【安卓逆向】Unity3D游戏层叠xx破解

他的算法也非常简单,用随机码的数值加上 cdxr,然后计算MD5,就是激活码。

我们可以实验一下,我这里的随机码是407313,加上cdxr后的md5:

【安卓逆向】Unity3D游戏层叠xx破解

MD5一般都是32位大写,我们这里用3A0FADACC8B91EDF1CEBCF342DBE5593作为激活码测试一下:

【安卓逆向】Unity3D游戏层叠xx破解

【安卓逆向】Unity3D游戏层叠xx破解


激活成功,可以继续玩了。

接下来我们尝试一下过掉他的激活验证。

分析CheckJiHuoMa,定位到调用的地方

【安卓逆向】Unity3D游戏层叠xx破解

可以发现在SetGameStart调用了这个验证:

【安卓逆向】Unity3D游戏层叠xx破解

他的代码也很简单,判断当前关卡是否大于开放关卡,这里是30

【安卓逆向】Unity3D游戏层叠xx破解

如果大于30则判断激活码是否正确,激活码正确就调用SetActive方法。

我们的修改方法有很多,可以修改CheckJiHuoMa方法返回值恒为true

也可以修改 kaiFangLevelCount常量的值为99999,也可以修改他的判断等等。

这里我们直接改他的kaiFangLevelCoun常量,简单而又美观。

【安卓逆向】Unity3D游戏层叠xx破解

右键编辑IL指令,这里的0x1E就是30的十六进制,这个游戏一共有300关,我们修改成大于300的即可。

【安卓逆向】Unity3D游戏层叠xx破解

先把前面改为ldc.i4,然后输入0XFFFF,这个是65535的十六进制,已经够大了。

【安卓逆向】Unity3D游戏层叠xx破解


确定后保存文件,替换掉原来的再测试:

(我们为了快速测试可以修改他的Pref文件,他里面保存了当前关卡的数值,我们改为30

【安卓逆向】Unity3D游戏层叠xx破解


来到30关:

【安卓逆向】Unity3D游戏层叠xx破解

过关之后直接31关,没有任何提示,破解成功。


声明:本文仅供研究学习,请勿用于非法和商业用途,否则后果自负。

Sp软件服务 · 2018

以上是关于安卓逆向Unity3D游戏层叠xx破解的主要内容,如果未能解决你的问题,请参考以下文章

手游逆向初探Unity3d+il2cpp.so网游修改新手教程篇[内附所有相关工具下载地址和说明介绍

安卓手机如何打开.unity3d文件

Unity3D开发安卓游戏怎么连接外部蓝牙摇杆

安卓逆向-一次未完全完成的游戏破解修正

Unity3D的介绍

Unity3D 学习教程 1 入门