APK 静态/深挖分析能力 Playbook

日期:2026-06-10 | 状态:active | Owner:package-forensics | Review cadence:每轮新增 App 批次后复盘一次

本报告总结当前 APK 分析流水线能真实推进到什么深度、不同技术栈的适配方式、边界和下一步补证路径。它面向后续 App 深挖,目标是让每次分析更快、更准、更少走错工具路线。

6已跑样本:Cleaner、PDF、Opera、Refoto、2 个 Flutter AI 图片 App
3深挖 lane:Hermes、Flutter AOT/blutter、Native/Ghidra
1Cleaner Guru 已还原到产品扫描流程和关键实现假设
arm64Flutter AOT 后续必须优先采集 arm64-v8a split

一、总判断

当前已经可以真实推进竞品学习。 对多数工具类、订阅类、AI 图片类、PDF 类 App,静态分析已经能稳定回答:包身份、技术栈、权限面、Activity/SDK 结构、广告/订阅/归因 SDK、endpoint 候选、资源和文案、版本差异、部分客户端核心逻辑。

真正的边界不是“能不能分析”,而是“哪个 lane 能还原核心逻辑”。React Native/Hermes 比 Flutter release AOT 更适合快速还原产品逻辑;Activity-heavy Java/Kotlin App 适合走 JADX/smali 和 Activity triage;Flutter 必须拿到 arm64 后用 blutter/Ghidra/动态证据组合;重 native、AI、PDF、媒体处理类适合 Ghidra 补 JNI/native 证据。

不能只靠静态结论定稿。 paywall 触发、远端配置、真实 SKU、实验开关、服务端算法和接口语义仍需要真机运行、抓包、Frida hook 或受控样本验证。

本轮更新:AI Art Magic 与 AI Photo Lab 已补到 arm64-v8a split 并跑通 blutter;Refoto 已对 AI bridge、MNN、OpenCL、AutoCrop、FaceLandmark、FastCV、RxFFmpeg wrapper 做 Ghidra/native/smali/model assets 交叉验证。当前结论不再是“Flutter 被 ABI 阻塞”,而是“Flutter 可恢复产品结构和常量,但接口真实语义仍需动态补证”。

二、按 App 类型的可分析深度

类型 当前能做到 难点/边界 适合学习什么 推荐优先级
React Native / Expo / Hermes 工具订阅类
Cleaner Guru
可还原路由、状态名、文案、paywall 线索、接口路径、媒体库调用、扫描流程、删除动作、订阅/恢复/校验链路。 变量名和 TS 源结构会丢失;远端配置、实验、真实价格和服务端校验需动态确认。 onboarding、扫描体验、paywall 时机、订阅包装、权限解释、低成本功能实现。 最高:适合复刻性学习和快速产品拆解。
Activity-heavy Java/Kotlin 工具 App
PDF Reader
可从 Manifest、Activity 命名、layout/resource id、smali/JADX 追页面和功能模块,PDF/OCR native lib 可用 Ghidra 补证。 混淆后业务类名质量不稳定;大量 SDK Activity 会干扰,需要先分 first-party/third-party。 功能包装、文件导入/扫描/转换链路、广告插屏点、订阅入口、权限和文件安全边界。 :工具型 MVP 设计参考价值大。
Flutter release App
AI Art MagicAI Photo Lab
已可用 arm64 split + blutter 恢复 Dart package 路径、模块名、路由、assets、广告位、Remote Config/IAP/paywall 线索和 endpoint 候选。 不能恢复完整 Dart 源码;生产 AI host 可能来自远端配置或运行时拼装,静态只能确认候选与 fallback。 产品结构、SDK 组合、资源承诺、接口候选、广告/订阅配置、Flutter 插件能力边界。 中高:适合产品/商业化拆解;接口语义需动态补证。
Native AI/图片/媒体处理 App
Refoto
Activity/SDK/endpoint 可静态归纳;native AI、OpenCL、FFmpeg 等库可用 Ghidra 看函数、JNI、符号、调用方向。 很多 AI 能力在服务端;native 反编译成本高,只适合定点问题,不适合全量还原。 本地预处理、图片管线、模型/滤镜/压缩/上传前处理、付费能力边界。 :适合验证“本地做了什么”,不是最快产品拆解对象。
浏览器/VPN/头部复杂 App
OperaNordVPN
可看权限、组件规模、SDK、endpoint、信任背书、套餐和素材话术;可拆广告/订阅/安全文案。 组件量巨大、native/安全/网络栈复杂,直接复刻不现实;动态分析也会更重。 信任表达、套餐结构、隐私/安全文案、广告承诺、onboarding 参考。 低到中:learning only,不建议作为直接实现目标。

三、Cleaner Guru 目前的明确结论

四、工具 lane 的正确使用方式

Lane 适合对象 产出 不要误用
Activity triage Manifest 组件、Java/Kotlin 多 Activity App、SDK 面拆分。 first-party/third-party Activity、模块边界、入口图谱、需要追的页面。 不要期待它还原 RN/Flutter 的核心业务逻辑。
Hermes lane React Native/Hermes App。 字符串表、模块边界、路由、接口、状态名、部分控制流和核心产品逻辑。 不要把反编译代码当完整源码;变量名和结构可能被破坏。
Flutter AOT / blutter Flutter release 且有 arm64-v8a/libapp.so Dart snapshot 的对象、符号、伪代码线索、Frida 辅助脚本。 当前不要对 armeabi-v7a 样本强跑 blutter;先补 arm64 split。
Ghidra native .so、JNI、Flutter AOT、IL2CPP、PDF/OCR/AI/媒体 native 库。 函数列表、符号、伪 C preview、native 调用方向。 不要作为 Activity、Hermes、普通 Java/Kotlin 页面的主路径。
动态 lane paywall、接口、远端配置、权限弹窗、真实算法行为。 抓包、Frida/ADB 证据、受控输入输出、真实 SKU 和实验状态。 不要在没有静态定位前盲跑;先确定 hook 点和测试场景。

五、后续每个 App 的快速分析流程

  1. 先跑基础静态:包名、版本、签名、权限、组件、SDK、endpoint、assets、native libs。
  2. 立即分类技术栈:RN/Hermes、Flutter、Java/Kotlin、native-heavy、Unity/IL2CPP、hybrid WebView。
  3. 按分类选择唯一主 lane:Hermes 看 JS 逻辑,Flutter 找 arm64 + blutter,Java/Kotlin 走 Activity/JADX,native-heavy 走 Ghidra 定点。
  4. 输出产品级问题清单:首次价值、权限解释、扫描/生成/转换主流程、paywall 触发点、退款/误删/隐私风险。
  5. 只对高价值疑点做动态补证:接口 host、SKU、远端配置、关键函数入参出参、受控样本行为。
  6. 版本对比放在第二轮:latest 先看当前商业化,earliest 用来还原初始 MVP 和功能膨胀路径。

六、下轮优先事项

七、证据入口

清理规则:本报告只保留摘要和证据入口;APK、解包目录、Ghidra/blutter 原始输出继续放在 ignored 的本地目录,不提交。