美文网首页跟着小强学Android反编译
360加固脱壳以及一些第三方脱壳方法

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

作者: 神一般的男子 | 来源:发表于2018-05-26 12:57 被阅读1044次

    前言:

    普通常见的反编译模式相对来说比较简单 但对于使用了 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,然后就可以分析源码了。

    相关文章

      网友评论

      • imesong:运行第三方App之后,data/data/pkg name 下的dump 文件内为空,是什么情况呢,没有脱壳成功吗?还是方法不能用了?
        神一般的男子:@imesong 这个估计是版本问题,这个我也测试出来,只能脱最近的,然后旧的去年的,不能用这个方法,你要脱什么壳,发出来,我帮你弄吧。
        imesong:@神一般的男子 确定是360加固,反编译看到的360加固相关的so。同时在 github上也有很多反馈,没有dump 出 dex 的,不知道您当时怎么成功的
        神一般的男子:确定是360加固吗,必须是加固才会有的。

      本文标题:360加固脱壳以及一些第三方脱壳方法

      本文链接:https://www.haomeiwen.com/subject/mnkmjftx.html