Droid ASC Vibe 项目
把编译产物当数据库直查,1.79 秒完成全局交叉引用检索
项目简介
Droid ASC 是一款超高速的 Android 反编译前端,专为 Agent 与移动安全研究者设计。传统反编译流程在面对几百 MB 的商业 APK 时,往往需要先把整个产物完整展开、建立庞大的全局索引与交叉引用,再等待漫长的时间才能开始检索。Droid ASC 反过来思考:编译产物本身已经是高度结构化的,为什么还要重建一遍臃肿的数据库?它选择把 APK 当作只读数据库直接查询,用一个无状态、零预处理的引擎,按需在毫秒级完成代码定位与反编译。
核心功能
- 零预处理检索:跳过完整 inflate 环节,直接在 Deflate 比特流中探测,构建密集的 Huffman 查找表,在不触碰无关数据块的前提下提取核心元数据。
- 即时反编译:命中目标后仅提取目标字节码及其依赖,在内存中动态重建一个最小而自洽的 DEX,立即完成反编译,不做多余的全局展开。
- 全局交叉引用:跨所有 DEX 条目查找字符串、类型、方法、字段的引用关系,配合模糊类名匹配,支持大规模代码关系检索。
- 常量时间方法解析:设计了 O(1) 指令定位原语,无需构建沉重的映射表即可把原始字节码偏移还原为方法。
- Manifest 解析:可直接从 APK 解码 AndroidManifest.xml 并以 XML 形式输出。
- 命令行工具集:提供 getclass、getmanifest、findrefs 三个子命令,另有 GUI 模式,可多线程加速。
- 面向 Agent 设计:接口简洁、输出结构化,便于被自动化 Agent 与移动研究流程直接调用。
技术实现
Droid ASC 的关键突破在于它「利用编译器的优化行为」而非对抗它。R8 编译器在经过确定性常量重定位与指令去重之后,会在物理布局上留下高度集中的结构,Droid ASC 正是把这种编译行为武器化,用来实现极快的跨 DEX 代码搜索。作者进一步放弃了传统的整体展开,改为直接在 Deflate 压缩流中探测目标数据,通过密集 Huffman 查找表快速定位元数据,避免解压无关数据块。命中目标后,引擎只提取所需的字节码片段及其依赖,在内存中重建一个最小自洽的 DEX 并即时反编译,全程无全局预处理、无沉重索引。在 352MB 商业 APK 的实测中,Droid ASC 用 1.79 秒完成全局交叉引用搜索,用 141MB 内存、177 毫秒完成目标类反编译,把反编译器重新拉回「按需、轻量、快速」的本质。
快速上手
第一步,通过 pip 安装:执行 pip install droidasc,或从源码 pip install . 安装。
第二步,安装完成后 droidasc 命令即可全局使用,直接对目标 APK 运行。
第三步,按需求调用子命令,例如用 droidasc getclass app.apk Lcom/poc/Main; -o Main.java 反编译指定类。
第四步,查找引用时使用 droidasc findrefs app.apk string token -o string_refs.txt,或加上 --fuzzy-class 做模糊类匹配;需要图形界面时加上 --gui 参数启动。
适用人群
移动安全研究员、Android 逆向工程师、需要在大体量 APK 上快速定位代码的渗透测试人员,以及希望把反编译能力接入自动化 Agent 流程的开发者。
开源信息
项目采用 Apache-2.0 协议开源,使用 Python 开发,托管于 GitHub(github.com/MG1937/ASC),曾在 Black Hat Europe Arsenal 环节做专题分享,目前已获得约 1000 颗星标,近期仍在持续更新。
评论与建议
登录 后参与评论或提建议