更强脱壳器的不同思路
分析Fart和Youpk的整体dump组件
Fart整体dump思路的演进
APP中的Application类中的attachBaseContext和onCreate函数是app中最先执行的方法。
因此需要选在在Application的onCreate函数执行之后才开始被调用的任意一个函数中。
比如选择在ActivityThread中的performLaunchActivity函数作为时机,来获取最终的应用的Classloader。


ART下DexFile类中定义了两个关键的变量: begin_、size_以及用于获取这两个变量的Begin()和Size()函数
这两个变量分别代表着当前DexFile对象对应的内存中的dex文件加载的起始位置和大小。
只要有了这两个值,我们就可以完成对这个dex的dump。
类装载的流程
1、装载:查找和导入Class文件
2、链接:其中解析步骤是可以选择的
(a)检查:检查载入的class文件数据的正确性
(b)准备:给类的静态变量分配存储空间
(c)解析:将符号引用转成直接引用
3、初始化:即调用<clinit>函数,对静态变量,静态代码块执行初始化工作

Fart整体dump思路的演进

Youpk的整体dump思路

Youpk+Fart 整体dump进一步提升
在安卓8上禁用dex2oat
结合fart所提出的海量脱壳点
- 每个脱壳点都可以脱壳
推荐阅读
- https://bbs.pediy.com/thread-252630.htm
- https://bbs.pediy.com/thread-254028.htm