热门游戏的“加壳”诡计!!

好久没搞游戏了,前几天看了又重新看了看<开心消消乐>的1.29最新版..于是故事开始了:

1.反编译分析

首先使用Androidkiller进行反编译,得到两个Smali代码文件夹:mali和smali_classes2。到这觉得挺奇怪的,因为一个游戏客户端,基本都是引擎编写的,如主流的Cocos2dx、Unity3D等,主要代码是C/C++/C#或者一些脚本、图片。无论apk本身有多大,Java逻辑都不会很多,极少编译出现2个dex,就像一些大型的应用客户端2个dex才是普遍的现象。

热门游戏的“加壳”诡计!!_第1张图片

其次,清单文件AndroidManifest.xml中的多个Activity都能在smali_classes2文件定位到.smali文件,真正是由于方法过多正常分离出2个dex的apk,Application和主Activity的Smali文件会在第一个dex中。

热门游戏的“加壳”诡计!!_第2张图片

所以可能是伪装成“加壳”的诡计!!

2.验证测试

既然全部的源码都在smali_classes2中,那我们就把smali_classes2->smali,将原来貌似壳文件的smali删除,然后搜索“.super Landroid/app/Application;”,修复下application入口,回编安装,游戏并不奔溃,而是弹出了签名验证的正常提示,说明程序没问题。确实为“加壳”诡计!!

热门游戏的“加壳”诡计!!_第3张图片

3.移花接木·化为己用

Android最大的特点就是可偷。既然它把技术诚心诚意的放出来了,我们就移花接木到自己的APP上啊。。

通过修改、测试,只需三步就可以将任意大小的apk改造成含有2个dex的伪装加壳的apk:

第一步:将需要修改的apk反编译,重命名smali->smali_classes2,将我提供的smali复制到反编译根文件夹;

第二步:修改清单文件AndroidManifest.xml的application入口修改为:android:name="com.happyelements.security.shellguard.ShellApplication"

第三步:回编配置的最后一行“DexMaps: {}”修改为:

DexMaps:
  classes2.dex: smali_classes2
如下图,将一个大小为72K的apk改造成两个dex:

热门游戏的“加壳”诡计!!_第4张图片热门游戏的“加壳”诡计!!_第5张图片

相关下载

链接: http://download.csdn.net/detail/zihao2012/9375835  可以对比..





你可能感兴趣的:(Android安全,Multidex)