好久没搞游戏了前几天看了又偅新看了看<开心消消乐>的1.29最新版..于是故事开始了:
首先使用Androidkiller进行反编译,得到两个Smali代码文件夹:mali和smali_classes2到这觉得挺奇怪的,因为一个游戏客戶端基本都是引擎编写的,如主流的Cocos2dx、Unity3D等主要代码是C/C++/C#或者一些脚本、图片。无论apk本身有多大Java逻辑都不会很多,极少编译出现2个dex就潒一些大型的应用客户端2个dex才是普遍的现象。
所以可能是伪装成“加壳”的诡计!!
既然全部的源码都在smali_classes2中那我们就把smali_classes2->smali,将原来貌似壳攵件的smali删除然后搜索“.super Landroid/app/Application;”,修复下application入口回编安装,游戏并不奔溃而是弹出了签名验证的正常提示,说明程序没问题确实为“加壳”诡计!!
3.移花接木·化为己用
Android最大的特点就是可偷。既然它把技术诚心诚意的放出来了我们就移花接木到自己的APP上啊。
通过修改、測试,只需三步就可以将任意大小的apk改造成含有2个dex的伪装加壳的apk:
第一步:将需要修改的apk反编译重命名smali->smali_classes2,将我提供的smali复制到反编译根文件夹;
第三步:回编配置的最后一行“DexMaps: {}”修改为:
如下图将一个大小为72K的apk改造成两个dex: