Android逆向之旅—获取加固后应用App的所有方法信息

Android技术篇 尼古拉斯.赵四 14104℃

一、前言

在逆向应用的时候,我们有时候希望能够快速定位到应用的关键方法,在之前我已经详细介绍了一个自己研发的代码动态注入工具icodetools,来进行动态注入日志信息到应用中,不了解的同学可以查看这里:icodetools动态注入代码解析,看完之后都会发现这个工具对于现在加固的应用是没有办法的,所以我们如何能够得到加固的应用的所有方法信息呢?再不用复杂的脱壳步骤也可以轻松的获取对应的方法信息。这个就是本文需要介绍的内容。

 

二、获取加固应用方法

在之前了解过加固应用原理的同学或者是弄过脱壳的同学都知道,加固其实就是对源apk进行加密,然后进行解密加载运行,所以在这个过程中如果我们想要得到应用的所有方法信息,必须是在解密加载运行之后进行操作了。这个我们就需要借助系统的一个重要类DexFile,下面可以查看他的源码:

看到这三个方法,而这三个方法是一个应用中类加载运行的最终点,不管你怎么加固,最终都会需要解密,加载dex,加载类然后运行。所以这三个地方是应用运行的必经之地。看到三个方法的参数信息,可以知道这个类的名称和类加载器,那么我们就可以利用这两个信息通过反射获取这个类的所有方法信息,这里依然需要借助神器Xposed来进行hook操作,hook的对象就是系统的dalvik.system.DexFile类的三个方法:

注意:为了防止多dex进行hook发生类找不到的错误,这里做一次attach操作!这里为了演示加固应用,就选择了之前我写过的一个下载今日头条视频的小工具,当时没有开源,并且进行了加固,选择的是梆梆加固。也有人找我要源代码。那么通过本文案例分析之后,就不需要源码了,你可以窥探这个小工具的所有方法信息了。这个工具的下载地址:https://pan.baidu.com/s/1eR56t94,使用教程在应用中也有。或者不了解的可以看这篇文章: