Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 4.18 KB

ratel-doc.md

File metadata and controls

43 lines (31 loc) · 4.18 KB

平头哥(Ratel)在我看来是一个具有技术标志性的应用容器方案,可以作为一个在免Root环境下完整的逆向分析流派,包含了从脱壳到Hook到设备指纹到插件生态等一系列功能,再配合Sekiro、Rogue、Majora等长连接暴露框架和自建代理框架,几乎建立起了一整套逆向抓取应用场景的全套解决方案。

因为有幸和virjar哥共事,从平头哥的业务使用到进入平头哥迭代开发,从平头哥早期内部到开源,对于平头哥的功能价值和使用感受远远比以下文字阐述的功能列表更加强大。

平头哥的愿景是一个成熟的逆向生态,而非一个简单的应用分身Hook框架,敬请深入探索和交流。

功能介绍

平头哥(ratel)是一个Android逆向分析工具套件,他提供一系列渐进式app逆向分析工具。同时平头哥也是一个app二次开发的沙箱环境,支持在免root环境下hook和重定义app功能。

平头哥的实现类似于太极,通过重打包和IO重定向完成Hook正如和应用分身,再配合设备指纹功能达成分身和新机的绑定效果,再加上SuperAppium和定时任务管理以及热发布功能,一个安卓群控能力便已基本成型。

  • 基本的hook 任意app功能
  • 免root能力
  • 分身和多开能力(目前已经在生产验证过一台手机分身100个设备)
  • 设备指纹对抗能力:实验发现已经可以应对某些大厂
  • 群控能力: 内置SupperAppium模块,其开源方案:https://bbs.pediy.com/thread-260992-1.htm
  • 定时任务管理,大多为了支持无电脑的群控(无USB的脱机群控)
  • 热发布:插件模块通过后端热发,对集群所有设备生效。且支持回滚
  • RDP:目前市面上唯一还可以实现对微信等大型app实现smali重打包的功能模块
  • 脱壳:内置指令dump级别脱壳机,可以免root脱壳
  • 兼容和适配:在2000多台设备,兼容测试过500款来自应用市场的抽样app。覆盖Android5.0-Android10.0(Android11已经在内测中)
  • 免root IDA调试
  • 内置JustTrustMe
  • 内置socketMonitor(比肉丝的R0Cpature早出现3年,早期甚至支持线程跳跃追踪,用以解决异步问题)
  • SplitApk:GoogleAppStore Android 安装包分发格式
  • 完善的后台操作网站: https://ratel.virjar.com/
  • 多种重打包方案支持: appendDex、rebuildDex、zelda、shell
  • 生态:微信机器人、模拟定位、多开账号资源备份还原

关于平头哥的更多文档包括设计原理、使用方法也会在平头哥的用户手册中慢慢开放,结合源码阅读可以收获更多逆向知识,欢迎跳转官网获得更多体验。

平头哥核心原理

平头哥实现免Root Hook注入的核心来源于重打包技术,类似于Xpatch和太极,通过重打包注入代码在目标应用Application执行前执行我们的注入代码和SO,如此一来,便可以实现对目标应用的Hook。

类似于Xpatch,注入的方式分为替换AndroidManifest.xml中的application入口和在目标Application插入静态代码块,在平头哥中这两种方式对应着rebuildDex和appendDex,在感染时可以通过添加-e参数来选择这两种方式。

平头哥内部采用的ART Hook框架为魔改的SandHook,因此从类/包名上不存在所谓的Xposed痕迹,接着为了实现应用分身功能,平头哥使用了IO重定向,为每个分身指定一个独立的/data/data沙盒目录,同时利用IO重定向还可以对抗重打包签名校验,再配合设备指纹模块为每个分身分配一个可持久化的设备指纹,实现一个分身相当于一个新机。

所以,平头哥的核心就是重打包和IO重定向,但是实现上平头哥做了非常非常多的优化和细节,从平头哥的代码结构和提交次数(开源前就经历了上千次提交)就可以发现,例如重打包65535问题、Hook Bridge机制、应用兼容问题、安卓版本兼容问题、服务端/前端云感染和管理功能、插件热发/定时任务/自动点击等等。