360加固脱壳以及一些第三方脱壳方法

96
神一般的男子
0.3 2018.05.26 12:57* 字数 1456

前言:

普通常见的反编译模式相对来说比较简单 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了、

你会发现反编译出来的dex 只有几个类 逻辑都是调用so   

真正的dex会被加载到内存中隐藏起来 加固应用都是多dex这种形式

要想拿到他真正的dex 需要进行脱壳处理  基本原理都是从内存中dump 我一般会先用工具来尝试 不行的话就得上 IDA(反汇编神器)超级强的一个工具 杀手级别 贯穿移动端 PC端的逆向 但使用IDA 进行静态分析 动态调试脱壳就变的很麻烦了 而且并不是一两天能学会的

我们今天先用工具尝试简单的脱壳

现在市场中加固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安装包,或者直接下载源码进行编译项目到手机上。

注意在下载源码进行编译时,因为这个apk安装是没有启动页面的,所以你可能会遇到签名问题Run configuration配置问题。但都容易解决。配置问题解决方法:Run configuration中Launch Options选项选为Nothing,因为此项目是插件,没有启动页。

4.安装jadx或者jeb。(用于对dex文件进行分析)

这里提一下jeb和jadx的优势 可以直接打开apk进行反编译 而已还原效果好

jd-gui看反编译出来的jar(源码)有些代码为注释状态 显示不出来  但JEB 和jadx肯定可以全部还原

个人比较喜欢jadx看代码更加舒服,因为习惯java的格式。

jadx使用文档 可以直接打开apk dex文件,反编译神器  

JEB官网,这个是有的需要收费功能的,破解版的可以去看雪论坛工具里面找找 

二、脱壳过程

打开【Xposed Installer】App,在【模块】菜单中勾选DumpDex插件,然后重启设备

打开需要脱壳的App(此App应该已加固)。

安装一个MT文件管理器,或者re或es文件浏览器都可以,百度都能很容易搜到

打开文件浏览器,在根目录/data/data/应用包名/dump文件下,

如果脱壳成功,就可以搜索到一个或多个dump文件夹,里面就是目标dex,里面有可能有多个dex,要一个个看才知道是不是源码的dex,这个只能自己去一个个看,到底哪个是源码(系统自带文件浏览器,大多找不到root后的data目录)

三、jadx查看完整源码

上面三步是脱壳过程。如果前面已顺利得到dex文件,那么现在就要把dex发送到自己电脑上面,文件管理器有分享功能可以使用QQ传文件或者自己电脑连接手机传输,由于dex文件在root目录下, Android Studio的Device File Explorer没有copy权限,一个便捷的方法是在手机上把这些文件拷贝到外面的一些可见,这里就不多说了。

不过新版本360已经native化原DEX的onCreate中的所有指令了,还用老方法是拿不到onCreate的,所以是看不到onCreate里面的方法的,运行时有一个函数专门解析每一条DEX指令,通过jni反射执行,这里360要想进一步查看代码,还是要进行修复的,修复这个太难了,一时半会学不会,所以暂时放弃。

总结下来发现,对360加固和一些其他第三方加固等加固包都成功拿到dex文件。无论第三方加固怎么加壳,dex文件的加载到内存的时候代码肯定是要进行还原的时候,因为只要在这个时候dump出来就可以,360加固把dex加密了,总归是要解密的,解密操作有可能在dalvik模式里面的dex优化的过程,也有可能在art模式下dex2oat的过程,360就在dex2oat的过程中实现对dex解密然后编译成oat,因此通过修改dex2oat的代码编译一个新的dex2oat可以dump出解密后的dex,然后就可以分析源码了。

日记本