Android安全之定制ROM脱壳机浅析

admin 2026-04-16 05:05:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文基于FART项目优化定制Android7.1脱壳镜像,通过修改源码适配高版本系统并规避检测。详细说明镜像编译方法、脱壳触发机制(App启动1分钟后自动执行)及文件输出路径(/sdcard/fartDump)。提供日志监控关键词与三类dex文件鉴别方式,强调需授予存储权限并附源码与ROM下载链接。 综合评分: 85 文章分类: 移动安全,逆向分析,恶意软件,安全工具,实战经验


cover_image

Android安全之定制ROM脱壳机浅析

哆啦安全

2022年1月31日 00:27

在小说阅读器读本章

去阅读

以下文章来源于luoyesiqiu ,作者luoyesiqiu

luoyesiqiu .

分享有趣的事物

0x1 前言

前阵子,在论坛上看到一篇关于ART环境下主动脱壳方案的帖子(文末有链接),这个脱壳方案命名为FART,在帖子其中,作者附上Nexus5 Android6.0的镜像。我自己手上也有一台Nexus5,于是就刷入尝试,刷入后确实能脱壳,但是经常卡死,怀疑是那个版本的Android源码优化不好。于是就想手动编译一个用于脱壳的镜像,源码使用的是LineageOS14.1,经过作者提供的FART源码修改Android源码后,重新编译,最终生成了一个用于脱壳Android7.1的镜像,而且体验不错。

0x2 修改内容

相对于FART,我修改的内容并不多,修改后FART的整体逻辑也没有因此发生改变。为了过可能的壳的检测和适配Android7.1源码做了以下修改:

  1. 原脱壳机直接修改ActivityThread类,在它其中添加一些函数,为了过检测和代码简洁,我把这一部分代码重新写到一个类中,这个类名为Fart,可以在文末的项目链接中找到这个文件。
  2. 在FART源码中,会看到几处有引用SHARED_LOCKS_REQUIRED的地方,这个宏是用于线程安全的。但在Android7.x,这个宏改了名字,改成了SHARED_REQUIRES,所以做适配的时候也要做相应的修改。如果要适配Android8.0或者更高的版本,也需要改一下这个宏的引用
  3. FART中默认dump出来的dex是存放在/sdcard/fart的,我修改成了放在/sdcard/fartDump
  4. 在脱壳的过程中输出应用包名以及正在被加载的类的名称

对于看这篇文章的你,如果想自行编译镜像,可以把FART相应的源码文件覆盖到Android源码相应的路径。执行以下命令,生成ROM镜像:

$ make update-api
$ make systemimage

0x3 脱壳机的用法

修改过的镜像刷入手机后,手机就变成脱壳机,每当打开一个App,App内部就会开启一个线程来跑脱壳任务,不管你这个App是否加过壳。

由于脱壳机是要把脱出来的dex存放在sdcard的,所以打开App后要赋予App写入sdcard的权限。App开启1分钟后FART才开始跑脱壳任务,如果想脱壳,要在这1分钟内赋予App写入sdcard权限。其实超过了1分钟才授权也不用紧张,重新打开App即可。那怎么确定App是否开始脱壳,或者是否完成了脱壳呢?很简单,只要查看logcat,对关键词ActivityThread进行过滤,如果出现sleep over and start fartthread说明Fart开始脱壳了,如果出现fart run over,则表示脱壳结束。

脱壳出来的dex存放的路径是/sdcard/fartDump/包名

对于脱下来的dex怎么知道哪些dex是我们想要的呢?

  • 名称格式为xxxx_dexfile.dex的dex文件是通过主动调用得到的dex,xxxx是dex文件的大小;
  • 名称格式为xxxx_yyyy.bin的是dex中函数的代码,用于dex文件的修复,xxxx是bin文件对应的dex文件的大小,yyyy是线程的tid,如果想要了解如何修复dex,可以去FART原项目查看dex修复脚本;
  • 名称格式为xxxx_dexfile_execute.dex的是用另外的方式脱下来的dex,如果xxxx_dexfile.dex不是你想要的dex文件,可以看看这种方式命名的dex

0x4 结语

非常感谢FART的开源,这使得人们对抗ART环境下App壳得到了良好的思路。FART脱壳机理论上来讲能脱大多数壳,但是仍有例外,需要自行摸索。

0x5 相关链接

  • 修改过的FART源码和编译好的ROM:https://github.com/luoyesiqiu/android-fart
  • 本文重要参考来源:https://bbs.pediy.com/thread-252630.htm
  • 原FART项目:https://github.com/hanbinglengyue/FART

【精彩阅读】

Android/Linux Root分析与研究

Android APP抓不到包的解决思路

Android获取Root权限的通用方法

Android逆向之Magisk+Edxposed刷入教程(内附资源)

Gradle Plugin+Transform+ASM Hook并替换隐私方法调用(彻底解决隐私不合规问题)

点个在看你最好看


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:哆啦安全 《Android安全之定制ROM脱壳机浅析》

评论:0   参与:  0