APK概述:
*
CrakeMe02是一个放置类型的单机手机游戏。
特此声明 :
*
本文只是用来学习使用,禁止用于商业或其他用途,违者后果自负!
*
游戏主界面:
商店:
分析工具
Apktool 2.4.1
Android Killer V1.3.1.0
dnSpy v6.1.2
目的:
让金币变成最大值,可以随意买买买~~~
分析过程:
1.首先还是老套路,将apk拖入AndroidKiller中
咦,这个游戏的界面怎么不一样。只有一个Activity,并且由分析结果得出这个游戏是基于Unity3D的
*
2.这里要说明下:
Unity3D 安卓游戏的主逻辑都在 asserts/bin/data/Managed/Assembly-CSharp.dll中,所以我们要对dll文件进行逆向
*
库文件分两种
库的定义— 就是一种可执行代码的二进制形式,可以被操作系统载入内存执行
静态链接库 — 以 .a / .so结尾 ,在编译时把代码加入目标程序 *
动态链接库 — 以 .dll 结尾,在程序运行时链接的
3.用Apktool 解压 目标apk,找到目标dll文件
apktool d xxx.apk (解包)
找到文件过后,我们用dnSpy打开dll文件,首先把dll文件复制出来,放在单独的文件中,有个备份
打开dll文件,这里才是Unity3D游戏中大部分主逻辑存放位置,接下来就是对dll文件进行修改。
*
4.下面祭出这张神图,一般来说游戏中的属性都以差不多方式命名(毕竟游戏是要维护的,命名肯定要遵守规则的,除非混淆看不到了),然后我们想要修改什么属性,直接全局搜索对应的英文
5.这里作者提倡此类游戏能不修改就不修改,要修改顶多只修改个金钱就行了,改攻击力其他的就别想了,要不然游戏就没有意思了。好了言归正传,
先搜索 gold 试试
额。好像没有相关的类,都是window之类的
*
那我们再搜索 coin试试
看来有效果,从字面意思来看,应该是用户信息之类的类,那我们点击第一个进去,在这个类中全局搜索coin
可以看到这个用户信息类是一个单例类,找到一处赋值函数
这段逻辑是,如果没有掉落金币,就一直是0,只要掉落金币后,就会保持99999999
6.替换后dll文件,我们只需要重新打包成apk,并且用Andr
oidKiller来签名,让我们看看成果。
是不是什么地方搞错了?为什么金币没涨? 不用担心,上面我们已经说过修改代码的这段逻辑,只有杀死敌人一次后,金币才能变化,不然金币一直会返回0. 我们骚等片刻,等杀死一次敌人后再看看。 当当当~~~
赶紧买买买~~~
CrakeMe系列—02下载地址
提取码:8bxs