Skip to content

类别:abnormal 异常结构 ​

abnormal

abnormal 类别检测 DEX 结构异常——偏离规范但未必是故意对抗,可能是非常规编译器、损坏或实验性产物。

📋 规则分布 ​

abnormal tag 的规则在 dex/abnormal.yara:

规则检测
abnormal_header_sizeDEX header 的 header_size 字段异常
non_little_endianDEX 不是小端序(规范要求小端)

🔍 规则示例 ​

yara
rule abnormal_header_size : abnormal {
  condition:
    is_dex and dex.header.header_size != 0x70   // 标准 DEX header 是 0x70 字节
}

正常 DEX 的 header 固定 0x70(112)字节。非此值说明结构异常——可能是被篡改、自定义格式或损坏。

🆚 与 anti_disassembly 的区别 ​

  • abnormal:结构异常,原因不明(bug?损坏?实验?)。
  • anti_disassembly:结构篡改,明确是对抗手段(让工具出错)。

界限有时模糊。non_zero_link_size 归 anti_disassembly(明确对抗),abnormal_header_size 归 abnormal(可能只是损坏)。

📊 finding 示例 ​

json
{
  "tag": "abnormal::abnormal_header_size",
  "category": "abnormal",
  "description": "Detects abnormal or suspicious modifications",
  "source": "app.apk!classes.dex",
  "identifier": "abnormal_header_size",
  "confidence": "high"
}

🎯 命中后怎么办 ​

abnormal 是 可疑信号 而非定论。命中后建议:

  1. 用 apkid-ai-cli type 确认文件类型。
  2. 用 baksmali/jadx 尝试反编译,看是否真能解析。
  3. 对比同编译器的正常样本,判断是损坏还是故意。

📍 相关 ​

基于 GPL & Commercial 双重许可发布