Skip to content

经典 CLI 概览 ​

经典 CLIargparse

apkid 命令是 APKiD 的经典接口,基于 argparse,提供彩色终端输出与 JSON 输出。适合终端手动分析。

🚀 用法 ​

usage: apkid [-h] [-v] [-t TIMEOUT] [-r] [--scan-depth SCAN_DEPTH]
             [--entry-max-scan-size ENTRY_MAX_SCAN_SIZE]
             [--typing {magic,filename,none}] [-j]
             [-o DIR] [FILE [FILE ...]]

APKiD - Android Application Identifier v3.1.0

📋 参数 ​

参数说明默认
FILE...APK/DEX/ELF 文件或目录(可多个)—
-h帮助—
-v / --verbose调试日志off
-t / --timeoutYARA 超时秒30
-r / --recursive递归子目录off
--scan-depth嵌套 ZIP 深度2
--entry-max-scan-sizeZIP 条目大小上限100 MB
--typing文件识别策略 magic/filename/nonemagic
-j / --jsonJSON 输出off
-o / --output-dir DIR写多文件目录(隐含 -j)—
--include-types含 file_type 检测off

🎨 终端输出示例 ​

bash
apkid app.apk
[+] APKiD 3.1.0 :: from RedNaga :: rednaga.io
[*] app.apk!classes.dex
 |-> compiler : dx
[*] app.apk!lib/arm64-v8a/libfoo.so
 |-> obfuscator : ollvm_v9
[*] app.apk!assets/libjiagu.so
 |-> packer : 360 Jiagu v5

tag 按类别上色(compiler=cyan、packer=red、obfuscator=yellow 等,见 output.py)。非 TTY(管道/重定向)时自动不上色。

📄 JSON 输出 ​

bash
apkid -j app.apk
json
{
  "apkid_version": "3.1.0",
  "rules_sha256": "abc123...",
  "files": [
    {
      "filename": "app.apk!classes.dex",
      "matches": { "compiler": ["dx"] }
    },
    {
      "filename": "app.apk!lib/arm64-v8a/libfoo.so",
      "matches": { "obfuscator": ["OLLVM v9"] }
    }
  ]
}

与 AI CLI JSON 不同

经典 JSON schema 是 {apkid_version, rules_sha256, files:[{filename, matches:{tag:[desc]}}]}。AI CLI 用的是 {schema_version, findings:[...], summary:{}}。两套不通用。新脚本建议用 AI CLI。

📁 批量写目录 ​

bash
# 扫整个目录,每个文件一个 JSON,保留路径结构
apkid -r -j -o results/ samples/

# 结果:results/samples/app.apk.json, results/samples/sub/other.apk.json ...

--output-dir 隐含 -j,按原始文件路径建子目录。适合批量特征提取入库。

🆚 与 AI CLI 的差异 ​

经典 CLI 没有 这些命令:diff、type、info、list-tags、rules、skills。它只做"扫文件/目录"这一件事。需要对比、查类型、管理规则时用 apkid-ai-cli。

能力经典AI
扫单文件/目录✅✅
彩色终端✅(--format text)
写多文件目录✅❌
diff 对比❌✅
type 类型❌✅
info/list-tags/rules/skills❌✅
结构化 finding + 置信度❌✅

🐳 Docker 里的经典 CLI ​

bash
docker/apkid.sh ~/path/to/app.apk
# 或
docker run --rm -v /path:/input:ro rednaga:apkid apkid /input/app.apk

📍 相关 ​

基于 GPL & Commercial 双重许可发布