返回列表 发新帖

fart脱壳:mikrom编译刷机

[复制链接]

1

主题

46

回帖

190

积分

小学生

Rank: 2

金币
162
好评
0
信誉
100

考神MT论坛新人

发表于 2026-7-3 18:21:23 | 显示全部楼层 | 阅读模式  来自 甘肃
本帖最后由 malone 于 2026-7-3 18:25 编辑

1. 什么是fart脱壳

该段中的部分文字来源于各大佬的文章,这里为总结性质的归纳,如有错误,还请指正。

Android APP 脱壳的本质就是对内存中处于解密状态的dex的dump,要达到对apk的脱壳,最为关键的就是准确定位内存中解密后的dex文件的起始地址和大小。那么这里要达成对apk的成功脱壳,就有两个最为关键的要素:

  • 内存中dex的起始地址和大小
  • 脱壳时机

于是出现了很多整体dex dump的脱壳工具,比如dexhunter等,但是随着加壳技术的发展,各加固厂商又结合hook技术,通过hook dex文件中类和方法加载执行过程中的关键流程,来实现在函数执行前才进行解密操作的指令抽取的解决方案。此时,就算是对内存中的dex整体进行了dump,但是由于其方法的最为重要的函数体中的指令被加密,导致无法对相关的函数进行脱壳。于是出现了FUPK3:

FUPK3实现并开源了Dalvik环境下的基于主动调用的脱壳技术,该脱壳工具通过欺骗壳而主动调用dex中的各个函数,完成调用流程,让壳主动解密对应method的指令区域,从而完成对指令抽取型壳的脱壳。完美实现了对抗指令抽取型壳的解决方案。

随着Android的升级,Dalvik虚拟机已经逐渐淡出了视野,当前的很多应用已经不支持安装在4.4以下系统中,这就导致fupk3也即将走向末路。寒冰大佬在fupk3的基础上,提出一种ART环境下的基于主动调用的的脱壳技术解决方案:

总的来说,FART脱壳的步骤分为三步:

1.内存中DexFile结构体完整dex的dump
2.主动调用类中的每一个方法,并实现对应CodeItem的dump
3.通过主动调用dump下来的方法的CodeItem进行dex中被抽取的方法的修复

在fart的基础上,后来又出现了Youpk:

Youpk是一款针对Dex整体加固+各式各样的Dex抽取的脱壳机,基本流程如下:

  • 从内存中dump DEX:DEX文件在art虚拟机中使用DexFile对象表示, 而ClassLinker中引用了这些对象, 因此可以采用从ClassLinker中遍历DexFile对象并dump的方式来获取。
  • 构造完整调用链, 主动调用所有方法并dump CodeItem:遍历DexFile的所有ClassDef,然后主动调用Class的所有Method, 并修改ArtMethod::Invoke使其强制走switch型解释器,然后在解释器中插桩,做CodeItem的dump。
  • 合并 DEX, CodeItem:将dump下来的CodeItem填充到DEX的相应位置中即可. 主要是基于google dx工具修改。

再后来出现了FartExt,作者后来写了一个和rom配套的管理app,组成MikRom

总的来说MikRom优化了以下几点:

  • 更深的主动调用
  • 去除了一些fart的一些特征,但我估计很快MikRom就会成为特征
  • 升级到了aosp10
  • 自带FART函数修复
  • 带一个app界面,可以方便操作需要脱壳的app和类
  • 还有一些其他的功能,暂时没研究,这里就不归纳了,大家可以去看原作者的文章

于是下面打算来玩玩mikrom,但是我的pixel 3a手机暂时没有编译好的刷机包可用,于是下面尝试自己编译mikrom的aosp源码。

2. mikrom编译刷机

关于aosp编译,可以参考之前写的文章:https://saucer-man.com/android/986.html,这里对于细节就不再概述,编译环境为ubuntu20虚拟机。

2.1 下载aosp源码

和作者的编译版本尽可能保持一致,这里我选用了android-10.0.0_r4分支的源码


  1. # 下载代码
  2. cd ~/Desktop
  3. mkdir android_source
  4. repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r4
  5. repo sync -j4
复制代码
2.2 修改aosp源码

下载mikrom

  1. git clone https://github.com/dqzg12300/MikRom.git
  2. cp -r MikRom/aosp10r2 ~/Desktop
复制代码

然后修改aosp源码,这里我已经diff过了,可以直接沿用作者的源码,直接拷贝Mikrom的文件覆盖aosp源码即可,如果你使用了差别比较大的源码,最后手动diff下作者的修改,然后逐个修改文件。

  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. import os

  4. from shutil import copyfile
  5. for fpathe,dirs,fs in os.walk('/home/yanq/Desktop/aosp10r2'):

  6.     for f in fs:
  7.         source_file_path = os.path.join(fpathe,f)
  8.         dest_file_path = source_file_path.replace("aosp10r2","android_source")
  9.         copyfile(source_file_path, dest_file_path)
复制代码

然后给修改的源码目录添加编译白名单


  1. vim build/core/tasks/check_boot_jars/package_whitelist.txt
  2. 在最后添加
  3. cn\.mik
  4. cn\.mik\..*
复制代码
2.3 下载驱动

驱动的下载链接位于https://developers.google.cn/android/drivers ,找到QP1A.191005.007


  1. cd ~/Desktop
  2. wget https://dl.google.com/dl/android/aosp/google_devices-sargo-qp1a.191005.007-ad5eb01e.tgz
  3. wget https://dl.google.com/dl/android/aosp/qcom-sargo-qp1a.191005.007-6203bdff.tgz
  4. tar -zxvf google_devices-sargo-qp1a.191005.007-ad5eb01e.tgz
  5. tar -zxvf qcom-sargo-qp1a.191005.007-6203bdff.tgz
  6. cp extract-qcom-sargo.sh android_source/
  7. cp extract-google_devices-sargo.sh android_source/
  8. cd android_source/
  9. ./extract-google_devices-sargo.sh
  10. ./extract-qcom-sargo.sh
复制代码
2.4 编译
  1. cd ~/Desktop/android_source
  2. source build/envsetup.sh
  3. lunch aosp_sargo-userdebug

  4. make update-api -j12
  5. make -j8
复制代码
2.5 刷机
  1. # 重启到fastboot模式
  2. adb reboot bootloader

  3. # 设置系统位置
  4. export ANDROID_PRODUCT_OUT=/home/yanq/Desktop/android_source/out/target/product/sargo/

  5. # 刷入
  6. fastboot flashall -w
复制代码
2.6 验证
  1. sargo:/ $ service list | grep mikrom
  2. 113     mikrom: [android.app.IMikRom]
复制代码

存在该service,则说明系统可用。

2.7 脱壳测试

下面装入MikManager,可以在https://github.com/dqzg12300/MikManager 页面进行下载


这里使用360的免费壳作为测试,可以使用下面的过滤来查看日志。


  1. adb logcat | grep "mikrom"
复制代码

在MikManager中勾选要脱壳的app,然后打开该app,即可进行脱壳。跑完之后会生成repair后的dex文件。




然后我们使用jadx打开:



效果还是不错的

4. 参考链接

(参考链接已经按照发布时间排序,可顺序阅读)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

38

主题

989

回帖

3580

积分

大学生

新手小白

Rank: 5Rank: 5

金币
1393
好评
4
信誉
100

考神MT论坛帅哥MT论坛新人MT论坛最佳新人

QQ
发表于 2026-7-3 18:28:42 来自手机  | 显示全部楼层  来自 山东
厉害!
回复

使用道具 举报

24

主题

3299

回帖

7108

积分

硕士生

Rank: 6Rank: 6

金币
4265
好评
0
信誉
104

MT论坛新人考神

发表于 2026-7-3 18:43:31 来自手机  | 显示全部楼层  来自 河南
瞅瞅
回复

使用道具 举报

0

主题

2964

回帖

6897

积分

硕士生

Rank: 6Rank: 6

金币
3316
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-7-3 18:50:59 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

2

主题

1315

回帖

4493

积分

大学生

Rank: 5Rank: 5

金币
2979
好评
0
信誉
103
发表于 2026-7-4 18:29:16 来自手机  | 显示全部楼层  来自 广东
只能电脑用?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表