Skip to content

规则系统概览 ​

YARA规则

APKiD 的全部识别能力来自 YARA 规则。本文是规则系统的总入口。

📊 规模一览 ​

维度数量
源 .yara 文件21
规则总数(含 private)365+
文件类型目录6(apk/dex/elf/dll/res + 编译产物)
检测类别20

📂 按文件类型组织 ​

规则在 apkid/rules/ 下按 被扫描文件的类型 分目录:

目录文件类型规则文件
apk/APK(ZIP)common, packers, protectors, obfuscators
dex/Dalvik 字节码common, compilers, packers, protectors, obfuscators, anti-vm, abnormal
elf/原生库/可执行文件common, packers, protectors, obfuscators, anti-vm
dll/Windows PE DLLcommon, obfuscators
res/二进制资源common, obfuscators, protectors

每个目录下再按 检测类别 拆文件。详见 规则文件组织。

🏷️ 按检测类别 ​

每个规则带一个 tag,决定它的 category。主要类别:

类别图标规模说明
packer🛡️150+APK 加固/打包
protector🏰90+保护 SDK(RASP)
obfuscator🧩75+代码混淆
compiler🔧15编译器指纹
anti_vm🖥️29+反虚拟机
anti_debug🐛—反调试
anti_disassembly📐4反汇编
anti_root🌱5反 Root
abnormal⚠️3异常结构
dropper📦2+释放器
manipulator✂️3篡改器
file_type📄6文件类型

详见各类别子页(侧边栏"检测类别"组)。

🧩 private 规则 ​

带 private 的规则 不输出,只被其它规则引用。APKiD 用它封装可复用的结构指纹(如 dx_map_type_order、r8_marker)。带 internal tag + private,确保不污染结果。

🔌 DEX 模块 ​

APKiD 用 yara-python-dex,带 import "dex" 模块。这让 DEX 规则能访问结构字段(dex.map_list.map_item[i].type 等),做结构级指纹。详见 DEX 编译器。

📦 编译产物:rules.yarc ​

源 .yara 编译成二进制 rules.yarc(gitignored),运行时只 yara.load() 它。详见 编译与发布。

📚 文档导览 ​

📍 相关 ​

基于 GPL & Commercial 双重许可发布