文章总结: 本文基于FART项目优化定制Android7.1脱壳镜像,通过修改源码适配高版本系统并规避检测。详细说明镜像编译方法、脱壳触发机制(App启动1分钟后自动执行)及文件输出路径(/sdcard/fartDump)。提供日志监控关键词与三类dex文件鉴别方式,强调需授予存储权限并附源码与ROM下载链接。 综合评分: 85 文章分类: 移动安全,逆向分析,恶意软件,安全工具,实战经验
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源码做了以下修改:
- 原脱壳机直接修改ActivityThread类,在它其中添加一些函数,为了过检测和代码简洁,我把这一部分代码重新写到一个类中,这个类名为Fart,可以在文末的项目链接中找到这个文件。
- 在FART源码中,会看到几处有引用
SHARED_LOCKS_REQUIRED的地方,这个宏是用于线程安全的。但在Android7.x,这个宏改了名字,改成了SHARED_REQUIRES,所以做适配的时候也要做相应的修改。如果要适配Android8.0或者更高的版本,也需要改一下这个宏的引用 - FART中默认dump出来的dex是存放在
/sdcard/fart的,我修改成了放在/sdcard/fartDump - 在脱壳的过程中输出应用包名以及正在被加载的类的名称
对于看这篇文章的你,如果想自行编译镜像,可以把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脱壳机浅析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论