美文网首页跟着小强学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,然后就可以分析源码了。

相关文章

  • apk脱壳反编译

    脱壳参考:Android APK脱壳--腾讯乐固、360加固一键脱壳 - 简书 (jianshu.com)[htt...

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

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

  • Android加壳脱壳

    Android 加固与脱壳 加固与脱壳常用加固 so 文件特征分析 apk 加固动态调试分析 apk 加固-环境搭...

  • apk加固脱壳

    360加固成功脱壳 链接1:http://bbs.pediy.com/thread-210275.htm 链接2:...

  • 360加固apk脱壳实践

    原理: 参考:https://bbs.pediy.com/thread-219227.htm dex文件在ART上...

  • Android逆向之路---脱壳360加固

    前言 众所周知,现在软件在防止逆向采取了混淆,加壳等措施。比如360加固,腾讯加固,梆梆加固等等。这两天在逆向一款...

  • 360脱壳

    背景 在反编译app的时候,有时候会遇到一些加固了的app,这样子我们做竞品分析的时候,就无法使用apktool或...

  • 脱壳和加固

    脱壳工具 1.android-unpacker 2.Fdex2 3.drizzledumper 4.dexExtr...

  • android反编译,脱壳流程

    什么是脱壳? 脱壳是把加在软件上的保护程序脱了 直接能看到它的原码对于android而言 就是把加固后的apk打回...

  • ios脱壳

    什么是脱壳?摘掉壳程序,将未加密的可执行文件还原出来(有些人也称为“砸壳”) 脱壳主要有2种方法:硬脱壳、动态脱壳...

网友评论

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

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

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