ApkShelling脱壳和FART脱壳


20191218

  • FART合并dex的时候有bug,有时候会合并不彻底,最后把所有的dex都pull下来。
  • 需要给app赋予storage权限才能正常脱壳

开始是用ApkShelling脱壳,脱壳率是100%,忍不住说一句牛逼。不过后来发现有的壳脱不干净,主要是两种:一种的是整个dex的格式有问题,反编译的时候提示不是dex文件;一种是某几个文件中的函数只有返回没有函数体。网上查了一下,第一种不知道咋回事,第二种应该是类抽取加固。FART是ART环境下基于主动调用的自动化脱壳方案,理论上可以解决类抽取加固。但是我实验以后发现ApkShelling无法抽取干净的样本,FART也无法抽取干净。可能是样本用了更新的加固方法smali2c或者vmp。
不过从原理上FART是要比ApkShelling先进的。FART主要有三个优点:

    1. 使用FART就不用频繁重启了。
    1. 抽出dex是合并成一个的。
    1. 能够处理一般的类抽取加固,虽然我还没遇到过。

在此记录一下ApkShelling和FART的使用流程

ApkShelling

1、修改XposedEntry.java中的targetPackages

image.png

2、编译安装

image.png

3、重启手机

4、查看日志确认

# 在命令行输入下面的命令,然后打开app
adb logcat -s Xposed   
image.png

5、下载脱出的dex

# 下载dex,一般有好几个dex,使用grep分析具体是哪个?
adb pull /data/data/PATH/00403-01.dex .
image.png

FART

1、安装镜像

https://github.com/hanbinglengyue/FART上下载镜像,然后按照https://www.bodkin.ren/index.php/archives/513/刷机,中间没有遇到什么问题。

adb reboot bootloader
fastboot oem unlock

fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash ramdisk ramdisk.img
fastboot reboot

2、修改fart文件并上传

将fart配置文件fart复制到/data/fart(注意文件权限问题,和换行的问题),其中,fart配置文件中为要脱壳的app包名

 adb push ~/app_crack/fart/test/fart  /data
image.png

3、查看日志确认

# 在命令行输入下面的命令,然后打开app
adb logcat -s ActivityThread   
image.png

4、查看脱出来的dex

adb pull /sdcard/fart/包名/6600696_dexfile.dex .
image.png