用途:在应用运行前静态拆解 Android 应用二进制,回答“二进制里有什么、由谁签名、是否存在风险”,输入为 .apk/.aab 文件。与 android-package-diagnostics(已安装包运行状态)、android-network-trace(实时流量/pcap)分工不同;已安装应用、运行时联网、商店评分、UI 驱动、iOS ipa 均不在范围内。
主要能力:核心脚本 scripts/apkscan.py 使用标准库,配合 Android SDK build-tools(aapt2、apksigner);.aab 需要 bundletool。基础清单包括文件 SHA-256、组成(dex 数量、native ABI、大小)、清单(包名、版本、min/target SDK、权限及危险权限标记)、姿态(导出组件数、debuggable、allowBackup、usesCleartextTraffic、network-security-config)、签名证书 SHA-256 与验证的签名方案,以及启发式壳检测。可选深层工具(安装后才运行):jadx 反编译、apkid 壳/混淆、apkleaks 密钥、exodus 追踪器,每层标记 ran/skipped/failed,跳过时给出安装命令。
使用方式:先用 python3 "${CLAUDE_SKILL_DIR}/scripts/apkscan.py" tools 查看可用工具;再执行 apkscan.py report app.apk,可用 --layers 指定层,--json 输出 JSON,--keep 保留 jadx 输出便于 grep。报告含分析警告块,明确说明结果并非健康证明。
限制:跳过不等于干净,未安装的工具层不会报告“未发现”;AAB 会被 bundletool 规范化为 universal APK 并以调试密钥重签,故 AAB 签名分析为 not_applicable;.apks/.xapk/拆分包经由 base/universal 成员分析;universal APK 不等于 Play 实际分发文件;jadx 对混淆代码也会退出 0;native .so 逻辑 Java 反编译不可见;扫描器可能误报;有效签名不等于可信签名者。apkid 轮子常构建失败,此时回退到启发式壳检测字段。