soot-oss/SootUp

GitHub: soot-oss/SootUp

对经典 Java 静态分析框架 Soot 的全面重构,提供现代化的 JVM 字节码分析基础设施,支持调用图生成、过程间数据流分析等核心能力。

Stars: 794 | Forks: 109

Logo of SootUp

# SootUp 库 [![使用 Maven 的单元和集成测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/a672362e2c230846.svg)](https://github.com/soot-oss/SootUp/actions/workflows/tests.yml) [![codecov](https://codecov.io/gh/soot-oss/SootUp/branch/develop/graph/badge.svg?token=ELA7U7IAWD)](https://codecov.io/gh/soot-oss/SootUp) [![javadoc](https://javadoc.io/badge2/org.soot-oss/sootup.core/javadoc.svg)](https://javadoc.io/doc/org.soot-oss/sootup.core) [![Maven Central 版本](https://img.shields.io/maven-central/v/org.soot-oss/sootup)](https://central.sonatype.com/artifact/org.soot-oss/sootup) [![OpenSSF 记分卡](https://api.scorecard.dev/projects/github.com/soot-oss/SootUp/badge)](https://scorecard.dev/viewer/?uri=github.com/soot-oss/SootUp)[![OpenSSF 最佳实践](https://www.bestpractices.dev/projects/11242/badge)](https://www.bestpractices.dev/projects/11242) 这里是 **SootUp** 项目的主页。 这是对优秀且历史悠久的静态分析框架 [Soot](https://github.com/soot-oss/soot) 的全面重构。 ## 什么是 SootUp - 将 JVM 字节码(以及其他输入!)转换为中间表示 Jimple。 - 提供 ClassHierarchy(类层次结构)生成 - 使用不同的算法/精度进行 CallGraph(调用图)生成 - 通过由 [Heros](https://github.com/Sable/heros) 支持的 IDE/IFDS 框架进行过程间数据流分析 - 在检索方法 Body 时应用简单的转换(参见 `BodyInterceptor`) - 提供 Jimple IR 的解析和序列化。 ## 入门指南 [文档](https://soot-oss.github.io/SootUp/) 和使用示例可在 [示例](https://github.com/soot-oss/SootUp-Examples) 中找到。 请查阅 [Javadoc](https://soot-oss.github.io/SootUp/apidocs)。 您有问题吗?欢迎发起 [讨论](https://github.com/soot-oss/SootUp/discussions)。 ## SootUp 的改进 #### (与其前身 [Soot](https://github.com/soot-oss/soot) 相比。) - 全新的改进 API(无全局变量/单例模式) - 完全可并行化的架构 - 支持类的延迟加载(不再交错加载使用/依赖的类) - 快速失败策略 - 在构建对象时进行输入验证 - 对 Bytecode 的全面 Java 21 支持 - 多视图(不再有单一的静态 Scene) - 不可变的 Jimple IR 对象和图 ## 欢迎改进 SootUp! ### 贡献 如需反馈和功能请求,最好创建相应的 [议题](../../issues)。 如有问题和需要澄清的地方,请使用 [讨论区](../../discussions)。 ## 谁在使用 SootUp? - **Team Atlanta**,[DARPA AI 网络挑战赛 (AIxCC) 的获胜者](https://aicyberchallenge.com/finals-winners-announcement/) 使用 **SootUp** 来改进他们的[可达性分析](https://arxiv.org/pdf/2509.14589)。 请通过填写[此表单](https://forms.gle/Cr6noNjM6XYLXiTZ7)让我们了解您是如何使用 SootUp 的。 ## 出版物 [SootUp 论文](https://doi.org/10.1007/978-3-031-57246-3_13) 解释了更多细节以及 SootUp 背后的设计决策。 [预印本](/docs/assets/SootUp-paper.pdf) 也可获取。 如果您在研究工作中使用了 SootUp,请按如下格式引用: ``` @InProceedings{10.1007/978-3-031-57246-3_13, author="Karakaya, Kadiray and Schott, Stefan and Klauke, Jonas and Bodden, Eric and Schmidt, Markus and Luo, Linghui and He, Dongjie", editor="Finkbeiner, Bernd and Kov{\'a}cs, Laura", title="SootUp: A Redesign of the Soot Static Analysis Framework", booktitle="Tools and Algorithms for the Construction and Analysis of Systems", year="2024", publisher="Springer Nature Switzerland", address="Cham", pages="229--247", isbn="978-3-031-57246-3" } ``` ## 支持者 SootUp 的开发得到了德国研究基金会 (DFG) 以及 海因茨·尼克斯多夫研究所 (HNI) 的慷慨资助。
Logo of DFG Logo of HNI
[成为赞助者!](https://github.com/sponsors/soot-oss)
标签:CallGraph, DNS解析, IDE, IFDS, Jimple, JS文件枚举, JVM, Maven, Soot, SootUp, VPS部署, 中间表示, 代码转换, 可配置连接, 域名枚举, 开源项目, 漏洞验证, 程序分析, 类层次结构, 调用图生成, 软件分析, 静态分析框架