安卓脱壳指南

对安卓apk脱壳的目的是什么?

得到dex文件,dex文件里有smali代码,可以反编译成java,用于对apk进行进一步的分析

例如对代码进行分析后可以编写xposed模块来动态修改目标APP

apk壳的分类

1.内存加载

目标app先读取dex到内存,然后通过内存加载dex,防止直接对apk解包就能获得dex文件

2.指令抽取

目标app的类或方法的代码体被抽空,在类被加载或者具体方法被调用时才回填,这种方式直接脱壳只能得到包含类名和方法名的空代码dex文件,防止dex在加载阶段被脱壳

3.虚拟机保护

目标通过自定义虚拟机来执行指令,原来的smali代码被替换成了适用于自定义虚拟机的指令,这种方式直接脱壳会发现方法被native化

脱壳工具

1.基于xposed的工具

FunDex

2.基于frida的工具

frida-dexdump

3.基于虚拟机的工具

BlackDex