A declarative static analysis tool for jvm bytecode based Datalog like CodeQL
ByteCodeDL这个名字是从CodeQL演化的,ByteCode对应Code,DL对应QL,是一款声明式静态分析工具,主要是为了弥补CodeQL无法直接分析字节码的遗憾。
本项目主要有两个目的:
- 教学目的,帮助大家入门静态分析,本项目将演示如何通过datalog实现一些静态分析算法,比起命令式静态分析,这种方式要简洁很多,学习了基本原理之后,也可以自己DIY规则。
- 提高挖洞效率,安全研究人员一般拿不到源码,大多数情况只能分析Jar包,然后通过IDEA看反编译之后的代码,效率比较低,希望ByteCodeDL提供的搜索功能、调用图分析功能、污点分析功能,能够提高安全研究人员的挖洞效率。
you can use the docker we builded like docker-compose.yml
- 搜索功能
- 调用图分析
- CHA
- SIMPLE-CHA
- RTA
- 指针分析
- 上下文无关指针分析
- 一阶上下文调用点敏感指针分析
- 一阶上下文对象敏感指针分析
- 一阶上下文类型敏感指针分析
- 可选择上下文敏感指针分析
- 污点分析
- 上下文无关ptaint
- 上下文敏感ptaint
- 输出sarif
- 实现JackEE
- 性能优化
见docs文件夹
在使用中遇到什么问题,可以通过
- email: [email protected]
- github: issue/discussion
- telegram: bytecodedl
三种途径向我们反馈
- IDEA
- ByteCodeDL helper BDLH
- Datalog language plugin intellij-datalog