对于 Android 逆向小白而言,借助 AI 辅助工具完成加固 APK 的 Native 层分析已经具备落地可行性。本次以 Garlic 1.8 未发布版本作为核心静态分析工具,搭配 DeepSeek‑v4‑pro 大模型,在 Mac Mini M4 环境完成多组加固样本测试,全程不依赖复杂人工逆向功底,绝大多数 Dex 抽取、解密工作交由 AI 完成,使用者仅需做决策指令输入,即可完成腾讯乐固、爱加密、某 60 壳等多款商业加固样本的解析,同时也暴露出工具在 VMP、J2C 保护场景下的能力边界。本文完整还原整套测试流程、样本现象、工具输出产物,同时梳理不同加固壳对应的处理路径,给想要尝试 AI 辅助逆向的开发者提供可复用参考。

一、Android 逆向小白使用 AI 辅助分析的真实痛点

很多入门逆向人员在面对商业加固 APK 时,会遇到几类非常现实的阻碍。

第一,Native 层壳门槛高,大量解密逻辑存放于 SO 库,普通静态反编译工具只能拿到壳桩代码,真实业务 Dex 被加密藏匿,手动还原 ELF、定位解密函数、处理 VMP 字节码需要大量底层积累,小白很难独立完成。

第二,整套流程工具链割裂,Dex 导出、CFG 控制流提取、交叉引用、字符串提取、调用图构建需要切换 Jadx、Ghidra、Unicorn、Frida 多款工具,频繁切换会打断分析思路。

第三,部分加固样本存在多层嵌套保护,容器加密、压缩混淆、VMP 虚拟机保护叠加,很难快速判断该样本是要提取 Dex,还是需要抓包分析签名逻辑,容易做大量无效工作。

第四,AI 辅助逆向的实操案例较少,大多只讲概念,缺少完整样本输出目录、关键函数地址、真实的指令交互模式,网上公开资料大多是成熟逆向工程师的操作,不适合零基础人员复现。

本次测试就是针对以上痛点,验证小白仅输入简单指令:好的、继续、选择 A、A 和 B 同时、先 A 后 B,配合 AI 的 loop 循环模式,是否可以驱动 Garlic 完成整套加固样本分析,同时记录不同壳的终点判定标准,规避无效分析。

二、测试环境、样本与整套执行步骤

2.1 基础测试环境

  • 硬件:Mac Mini M4
  • Garlic 版本:1.8(未发布版本),garlic -n高级能力需要 license 授权
  • AI 模型:DeepSeek‑v4‑pro,客户端使用 cc switch
  • 静态分析:Garlic 内置 Rosemary 引擎,禁止 objdump、capstone 干预控制流解析
  • 动态组件:Unicorn 做模拟执行,Frida 用于动态捕获数据;不使用真机,仅使用模拟器
  • 测试样本:覆盖某 60 加固、爱加密、腾讯乐固、J2C 保护样本、VMP 虚拟机壳,一共 5 类典型加固 APK。

2.2 测试验收判定标准(落地可执行)

针对每一份待分析 APK,设置明确终止条件,避免无意义持续分析:

  1. 如果样本存在隐藏 Dex,成功解密导出真实 Dex,分析结束;
  2. 如果样本不存在隐藏 Dex,成功拿到 HTTP 签名相关关键参数,分析结束;
  3. 如果样本带有 VMP 保护,解析还原出 VM 指令集,分析结束;
  4. 全部样本完成 Dex 反编译、APK 全局调用图、字符串引用图,数据存入 duckdb 数据库,可供 AI 查询调用。

2.3 完整可执行操作步骤

  1. 将目标 APK 输入 Garlic 的 mcp‑server 服务,工具自动启动解析流程,Rosemary 引擎输出 SO 的 CFG 控制流、反汇编代码、导入导出表、函数交叉引用、pc‑xref、字符串清单。
  2. AI 读取数据库内的调用图、字符串、ELF 解析结果,输出加载流程、关键函数地址、样本加固类型判断。
  3. 操作者只输入极简指令,不需要手写逆向脚本;长时间无人值守时开启 loop 模式自动迭代。
  4. 根据 AI 输出结论,分支处理样本:
    • 存在隐藏 Dex:定位 native 解密入口 interface5、interface8 等函数,配合 Unicorn 模拟或者离线脚本完成 Dex 还原;
    • J2C 代码保护:静态无法解析,切换 Frida 动态抓包、模拟接口;
    • VMP 样本:梳理 VM opcode、PRNG 伪随机链、函数分发表,输出虚拟机指令集;
  5. 全部产物输出到本地目录,包含 duckdb 数据库、调用图表 csv、反编译源码、native 库解析文件、HTML 与 Markdown 格式报告。
  6. 对比不同加固样本的 token 消耗、整体分析耗时,记录工具能力边界。

2.4 样本加固类型处理对比表

表格

样本标识加固特征核心难点最终分析终点核心产物
com.fhyx.gamesstore.apklibjiagu.so,腾讯乐固Dex 尾部追加 23MB 加密 payload,运行期生成临时解密 SO解密得到真实业务 Dex重建 ELF、内存加载 Dex 文件、CFG 报告
com.yiyou.galibvlplg.so,VMP 壳INIT 段解密,自定义 15‑opcode 栈虚拟机,37 个加密 chunk解析完整 VM 指令集VM 字节码分析脚本、stub‑dex 文件
com.hexin.plat.android.ZheshangSecurityijiami.dat 爱加密三层加密:XOR 容器 + DEFLATE 压缩 + 字节替换加密离线 Python 脚本还原 9 份真实 Dexdex_decrypt.py 脚本,全套解密 Dex
com.sf.activitylibxloader.so 某 60 壳多层壳嵌套,恶意盗版样本,硬编码恶意域名提取内存加载 Dex,完成完整性校验逻辑梳理壳桩 Java 源码、native 加载器解析报告
com.ifeng.newvideolibshell‑super.so 乐固NRV2D 自定义压缩,assets 加密载荷文件Unicorn 模拟解压拿到完整 classes 系列 dexlegu_unpack.py 解压脚本,校验通过 Dex 文件

实操细节 1:本次测试有一个容易踩坑点,非官网下载的二次打包 APK,会出现两层加固叠加,不要直接当作官方原版样本处理,优先判断样本来源,避免浪费大量时间分析盗版壳。

实操细节 2:爱加密样本中com.ijm.dataencryption.DETool只是桩类,真正解密逻辑运行时由 native 层替换,Java 层看不到真实 dowork 实现,不要反复在 dex 桩代码里寻找解密密钥。

实操细节 3:部分加固会把 native 方法注册信息藏在加密 SO 内部,明文 so 中找不到 interface5、interface8 字符串,不能直接字符串搜索定位 native 接口,需要依靠 CFG 交叉引用定位。

三、典型加固样本加载流程与技术细节拆解

3.1 腾讯乐固样本:classes.dex 尾部挂载加密 Payload

样本入口为StubApp.attachBaseContext(),首先加载 DTC 引擎库libjgdtc.so,调用 native 层interface5完成壳初始化,反射加载真实 Application,调用interface8执行 Dex 解密,后续加载libjiagu.so释放到.jiagu私有目录。

真实解密逻辑不在明文 libjiagu.so,而是运行时动态解密生成的第二阶段 SO。classes.dex 偏移 18156 位置开始存在 23MB 加密载荷。assets 目录下goodgoodstudy.zip属于诱饵文件,真正加密载荷标记为.jgapp16 字节标识。

该样本不需要 VMP 分析,定位解密入口之后,就可以拿到真实业务 Dex,完成分析闭环。

3.2 VMP 虚拟机样本:libvlplg.so 自定义栈虚拟机

System.load(libvlplg.so)触发链接器 INIT 段执行,INIT [0] 完成代码数据解密,INIT [1] 初始化 VMP 虚拟机,JNI_OnLoad 注册全部 native 方法。

MyJni.loadnative 入口读取 37 个加密 chunk,每个 chunk 解密头部 284 字节生成 stub‑dex,通过InMemoryDexClassLoader完成加载。应用运行时,自定义 ClassLoader 拦截 findClass 调用,VMP 虚拟机解密对应 chunk 返回类数据。

虚拟机核心是 15‑opcode 类型栈机,拥有独立 PRNG 伪随机链,包含 mod_mul、mod_add、mod_sub 运算,依靠函数表动态分发处理逻辑。测试中产出analyze_vm.py脚本用于解析 VM 字节码,frida_readbuf.js捕获运行时 stub dex 内存数据。

3.3 爱加密样本 ijiami.dat 三层加密体系

assets 目录ijiami.dat17MB 加密 ZIP 文件,外层使用 XOR 隐藏 PK 魔术头,第一层解密得到标准 ZIP 压缩包;第二层取出内部 classes.dex 条目做 raw DEFLATE 解压;第三层对 57MB 的 ifd 载荷执行字节替换、K0 头部 XOR、map_list 特殊位置 XOR 处理,最终还原 9 份真实 DEX。

整套流程完全可以离线完成,不需要设备运行、不需要 Frida,仅依靠 Python 脚本就可以完成全部解密。native 侧 256bit 密钥派生逻辑在此场景没有作用,硬编码 K0 加上数据字节替换规则即可绕过。

3.4 某 60 加固盗版样本

样本存在明显盗版特征,壳结构为ShellApplication.attachBaseContext作为入口,初始化缓存目录,提取 assets 加密载荷,加载 libxloader.so 做 native 解密,通过makeInMemoryDexElements注入内存 ClassLoader,钩子 Instrumentation 拉起真实 Application。

样本存在完整的安全防护:APK 源文件 CRC 完整性校验、基于 /proc/self/exe 的反调试反模拟器、类名字符串 + 3 偏移混淆,大量使用反射隐藏调用逻辑。源码中硬编码 base64 字符串解码得到恶意域名,可作为盗版二次打包证据链。

3.5 NRV2D 压缩乐固样本(凤凰网 APK)

加固流程把原始 classes、classes2、classes3 经过 NRV2D 压缩,打包进入 assets 下0OO00l111l1l文件,替换 Application 为壳桩入口。

文件头部 u4 字段记录 dex 数量,每一个 packed_dex 包含未知随机字段、解压后大小、压缩大小、标记位以及 NRV2D 压缩数据流。处理流程:提取加密 assets 文件,解析头部结构,Unicorn 模拟 SO 内部 NRV2D 解压函数,跳过 16 字节头部,依据 dex 头 file_size 截断,adler32 校验完整性,脚本legu_unpack.py直接输出完整 dex 文件。

四、Garlic 输出产物目录结构解读

测试结束后完整输出 13 个目录,合计 311 个文件,产物覆盖数据库、调用图、反编译源码、native 库解析结果、分析报告。

plaintext

.
├── analysis.duckdb                # 核心数据库,存储CFG、交叉引用、字符串,AI查询数据源
├── cg                              # 调用图相关csv文件
│   ├── call_graph_edge.csv
│   ├── call_graph_node.csv
│   ├── string_edge.csv
│   └── string_node.csv
├── decompiled                      # Java层桩代码、反编译输出
│   ├── AndroidManifest.xml
│   └── com
│       ├── example
│       ├── ifeng
│       └── wrapper
├── native_libs                     # arm64‑v8a架构so全套解析产物
│   └── arm64‑v8a
│       ├── libapp.so
│       ├── libapp.so.cfg_edges     # CFG控制流边
│       ├── libapp.so.cfg_nodes     # CFG控制流节点
│       ├── libapp.so.dissembly     # 反汇编文本
│       ├── libapp.so.imports       # 导入表
│       ├── libapp.so.exports       # 导出表
│       ├── libapp.so.func_xref     # 函数交叉引用
│       ├── libapp.so.pc_xrefs      # 指令地址交叉引用
│       ├── libapp.so.strings       # 字符串提取
│       └── …其余数十个so解析产物
└── report
    ├── report.html                 # 可视化网页报告
    └── report.md                   # Markdown分析报告

这份目录是整套 AI 逆向的输入源,AI 不需要直接读取原始 APK,读取 duckdb 数据库与 csv 调用图,就可以完成样本加固类型判断、定位关键解密函数。

五、测试总结与落地建议

从本次小白视角的完整测试可以得出结论:AI 辅助 Android Native 逆向确实可以大幅降低入门门槛,使用者不需要精通 ARM 汇编、各类加固私有算法,依靠工具输出的 CFG、交叉引用、字符串数据,配合大模型推理,能够处理市面上主流商业壳。

但同时也要认清能力边界:面对 J2C 保护场景,纯静态分析完全失效,必须切换动态抓包模拟;VMP 虚拟机样本需要投入更多 token 完成指令集解析,耗时显著高于普通壳样本;多层嵌套盗版样本,会提升误判概率,需要优先甄别样本来源。

工具层面,Garlic 1.8 版本依靠 Rosemary 引擎完成静态信息提取,把全部结构化数据存入数据库,给 AI 提供高质量上下文,是这套方案成立的关键;garlic -n高级能力需要 license 授权。如果想要复现本次完整逆向过程,可以前往项目仓库查阅更多信息。

不同业务场景的验收标准不同。建议先定义成功指标,再选用工具,避免千篇一律的「试用—转化」收尾。

常见问题 FAQ

什么是解决方案?

「解决方案」可概括为:对于 Android 逆向小白而言,借助 AI 辅助工具完成加固 APK 的 Native 层分析已经具备落地可行性。本次以 Garlic 1.8 未发布版本作为核心静态分析工具,搭配 DeepSeek‑v4‑pro 大模型,在 Mac Mini M4 环境完成多组加固样本测试,全程不依赖复杂人工逆向功底,绝大多数 Dex 抽取、解密工作交由 AI 完成,使用者仅需做决策指令输入,即可完成腾讯乐固、爱加密、某 60 壳等多款商业加固样本的解析,同时也暴露出工具在 VMP、J2C 保护场景下的能力边界。本文完整还原整套测试流程、样本…

为什么要关注解决方案?

关注解决方案,是因为它直接影响效率、风险与可复制性。文中指出:很多入门逆向人员在面对商业加固 APK 时,会遇到几类非常现实的阻碍。

如何落地解决方案?有哪些关键步骤?

建议按以下路径推进解决方案:1) 硬件:Mac Mini M4;2) Garlic 版本:1.8(未发布版本),garlic -n高级能力需要 license 授权;3) AI 模型:DeepSeek‑v4‑pro,客户端使用 cc switch;4) 静态分析:Garlic 内置 Rosemary 引擎,禁止 objdump、capstone 干预控制流解析;5) 动态组件:Unicorn 做模拟执行,Frida 用于动态捕获数据;不使用真机,仅使用模拟器。细节见正文对应章节。

解决方案适合哪些人或团队?

解决方案更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「解决方案」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。

关于「一、Android 逆向小白使用 AI 辅助分析的真实痛点」,本文给出了什么结论?

在「一、Android 逆向小白使用 AI 辅助分析的真实痛点」部分,要点是:B,配合 AI 的 loop 循环模式,是否可以驱动 Garlic 完成整套加固样本分析,同时记录不同壳的终点判定标准,规避无效分析。 二、测试环境、样本与整套执行步骤 2.1 基础测试环境 硬件:Mac Mini M4 Garlic 版本:1.8(未发布版本),garlic -n高级能力需要 license 授权 AI 模型:DeepSeek‑v4‑pro,客户端使用 cc switch 静态分析:Garlic 内置 Rosemar

关于「二、测试环境、样本与整套执行步骤」,本文给出了什么结论?

在「二、测试环境、样本与整套执行步骤」部分,要点是:ATE 压缩 + 字节替换加密离线 Python 脚本还原 9 份真实 Dexdex_decrypt.py 脚本,全套解密 Dexcom.sf.activitylibxloader.so 某 60 壳多层壳嵌套,恶意盗版样本,硬编码恶意域名提取内存加载 Dex,完成完整性校验逻辑梳理壳桩 Java 源码、native 加载器解析报告com.ifeng.newvideolibshell‑super.so 乐固NRV2D 自定义压缩,ass