前言
现在市场中加固apk的方式一般有两种:
第一种是对源apk整体做一个加固,放到指定位置,运行的时候再解密动态加载。
第二种是对so进行加固,在so加载内存的时候进行解密释放。
我们今天主要针对第一种加固方式进行dex文件的获取。
一、工具准备
1.一部Root过的Android手机。
2.安装Xposed模块。
下载Xposed框架:打开手机浏览器,百度搜索xposed installer,点击下载。
Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。当前,Per APP Setting(为每个应用设置单独的dpi或修改权限)、XPrivacy(防止隐私泄露)、对原生Launcher替换图标等应用或功能均基于此框架。
3.安装DumpDex。(脱壳神器)
打开https://github.com/WrBug/dumpDex, 从这个页面下载APK安装包,或者直接下载源码进行编译项目到手机上。
注意在下载源码进行编译时,你可能会遇到签名问题和Run configuration配置问题。但都容易解决。配置问题解决方法:Run configuration中Launch Options选项选为Nothing,因为此项目是插件,没有启动页面。
4.下载Dex2jar、JD-GUI 。(用于对dex文件进行分析)
在SOURCE FORGE官网 下载dex2jar的zip包。目前最新版本是2.0,完成后解压。
在Java Decompiler官网 下载jd-gui,同样解压。
二、脱壳过程
- 打开【Xposed Installer】App,在【模块】菜单中勾选DumpDex插件,然后重启设备。
- 打开需要脱壳的App(此App应该已加固)。
- 打开【es文件浏览器】,勾选侧边栏菜单内“Root工具箱”,在根目录/data/data目录下搜索dump,如果脱壳成功,就可以搜索到一个或多个dump文件夹,里面就是目标dex。(系统自带文件浏览器,大多找不到root后的data目录)
三、Dex转Jar相关
- 上面三步是脱壳过程。如果前面已顺利得到dex文件,那么现在就要把dex文件取到PC上。
由于dex文件在root目录下, Android Studio的Device File Explorer没有copy权限,一个便捷的方法是在手机上把这些文件拷贝到外面的一些可见目录中。然后在Android Studio的Device File Explorer中copy这些文件到PC。 - 把dex文件存copy到d2j目录下,在终端执行反编译命令,生成jar文件后用jd-gui打开。
- 最后,让太君去开一瓶82年的雪碧,庆祝一下🍻🍻
总结下来发现,对360加固(免费)、爱加密(收费)、娜迦加固(收费)等加固包都成功拿到dex文件。没加固的不管你怎么混淆都很容易被人分析得干干净净,免费版的加固可以防止大多数只会反编译的小白,对于普通攻击者还是很有效果的。目前用此方法来看,无论免费版还是商业版,都能被破解,所以,产品设计的时候从安全角度出发,增强业务层面的安全风控,远比把重心放在加固上重要。