工具
Appshark Android 静态污点分析引擎
字节跳动开发的 Android APK 静态污点分析引擎,面向超大型应用设计:它依据 JSON 规则扫描应用,规则以 Jimple 签名指定入口方法、源、汇和净化器,用于漏洞与隐私合规审查。它基于 Soot 的 Jimple 中间表示,并复用 FlowDroid 的清单与资源解析模块,但指针分析和污点分析均为自行实现,且区分字段。结果写入 results.json,其中记录应用、组件和权限信息、深层链接及 JavaScript 桥接接口,以及每条从源到汇的路径,每项发现另有一个 HTML 页面。
- 目标
- 应用
- 类别
- Android 工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 需要 JDK 11;README 称由于依赖兼容性问题,它无法在 JDK 8 或 JDK 16 上运行。执行 ./gradlew build -x test 可生成 AppShark-0.1.2-all.jar。审阅时最新版本为 v0.1.2,发布于 2022-09-22,附预构建 jar;所审阅的 main 提交版本号仍为 0.1.2,但比该版本多 123 个提交,其中包括 2026 年 9 月加入扫描资源预算、受限的 jadx 工作区以及对不可信规则图进行校验的提交。入门指南仍链接 v0.1.1 的 jar。
- 输入为待分析的 APK,由传给 jar 的 JSON5 配置中的 apkPath 指定;规则取自 config/rules,其中有 unZipSlip、PendingIntentMutable、ContentProviderPathTraversal 等七条示例规则。仓库自带 18 个 Android SDK 平台存根 jar,即 config/tools/platforms/android-14 至 android-33/android.jar(缺 API 15 和 21,每个约 18 至 47 MB),作为默认 SDK 路径,另有五个很小的已编译测试类;javaSource 选项会从 config/tools/jadx/bin 调用 jadx,而仓库并未包含 jadx。
- 发现结果是静态的源到汇路径,覆盖范围取决于规则和设置:参数说明称 maxPointerAnalyzeTime 过短可能导致误报和漏报,FAQ 也举例说明切片模式的入口会漏掉别名路径。README 的安全提示称界面与服务端仅限本地测试使用。采用 Apache-2.0 许可。本次未分析任何 APK。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/overview.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/how_to_write_rules.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/argument.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/result.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/startup.md GitHub · bytedance/appshark · 修订 487fa21
- doc/en/faq.md GitHub · bytedance/appshark · 修订 487fa21
- config/rules GitHub · bytedance/appshark · 修订 487fa21
- config/tools/platforms GitHub · bytedance/appshark · 修订 487fa21
- build.gradle.kts GitHub · bytedance/appshark · 修订 487fa21
- src/main/kotlin/net/bytedance/security/app/StaticAnalyzeMain.kt GitHub · bytedance/appshark · 修订 487fa21
- LICENSE GitHub · bytedance/appshark · 修订 487fa21
- https://github.com/bytedance/appshark/releases/tag/v0.1.2