Skip to content

APKiD 是什么 ​

Android逆向分析YARA

APKiD 是一个 Android 二进制识别工具。它告诉你一个 APK(或 DEX、ELF、DLL)是 怎么被制造出来的——用了哪个编译器、是否经过加固(packer)、用了哪种混淆器(obfuscator)、是否被保护 SDK(protector)包裹、以及是否包含反虚拟机/反调试等对抗技术。

一句话概括:它是 Android 世界的 PEiD。

🎯 它回答什么问题 ​

拿到一个陌生的 APK,你通常无法直接知道:

  • 它是被 360 加固 还是 腾讯乐固 包裹的?
  • 那个 lib/armeabi-v7a/libfoo.so 是被 OLLVM 混淆过的吗?
  • classes.dex 是 dx 编译的,还是 D8/R8?有没有被 dexmerge 合并过?
  • 它在检测 模拟器 吗?在检测 Root 吗?在检测 Frida 吗?

APKiD 通过一组 YARA 规则 回答这些问题。规则匹配的不是源码,而是二进制中的 结构指纹——文件魔数、字符串特征、DEX 的 map_list 排列、ELF 节区符号、ZIP 条目路径等。

🧰 它能识别什么 ​

类别例子数量级
加固(packer)360 加固、腾讯乐固、梆梆、爱加密、百度加固75+
保护器(protector)Vkey、Verimatrix、Denuvo、Appdome、FreeRASP50+
混淆器(obfuscator)OLLVM v3~v9、DexGuard、Arxan、StringFog70+
编译器(compiler)dx、D8/R8、Jack、dexlib1/215
反虚拟机(anti_vm)检测 Build 指纹、SIM、QEMU 文件28+
反调试 / 反 Root / 反 Hookptrace、RootBeer、Magisk、Frida、Xposed若干
异常结构 / 释放器非法类名、map 后注入数据、ZIP 炸弹若干

规则总数 365+,覆盖 APK、DEX、ELF、DLL、RES 五种文件类型。详见检测规则总览。

🤖 三种使用方式 ​

APKiD 提供三个等价的接口,背后共享同一套扫描引擎:

  1. 经典 CLI — apkid:argparse,人类可读的彩色终端输出,适合手动分析。
  2. AI CLI — apkid-ai-cli:Typer + Rich,结构化 JSON 输出,专为 AI 智能体消费设计。
  3. MCP 服务器 — apkid-mcp:标准 MCP 协议(stdio),可被 Claude、Cursor 等 MCP 客户端直接调用。

对比详见 三种接口对比。

📜 项目背景 ​

APKiD 由 RedNaga 维护,基于 GPL & Commercial 双重许可。它脱胎于 Android 恶意软件分析与防盗版研究,曾在 BlackHat EU/UK Arsenal(2018)、NowSecure Connect(2019)、BlackHat USA Arsenal(2023)等会议上展示。

相关资料:

📍 下一步 ​

基于 GPL & Commercial 双重许可发布