ByteCodeDL
A declarative static analysis tool for jvm bytecode based Datalog like CodeQL
Why ByteCodeDL
ByteCodeDL这个名字是从CodeQL演化的,ByteCode对应Code,DL对应QL,是一款声明式静态分析工具,主要是为了弥补CodeQL无法直接分析字节码的遗憾。
本项目主要有两个目的:
- 教学目的,帮助大家入门静态分析,本项目将演示如何通过datalog实现一些静态分析算法,比起命令式静态分析,这种方式要简洁很多,学习了基本原理之后,也可以自己DIY规则。
- 提高挖洞效率,安全研究人员一般拿不到源码,大多数情况只能分析Jar包,然后通过IDEA看反编译之后的代码,效率比较低,希望ByteCodeDL提供的搜索功能、调用图分析功能、污点分析功能,能够提高安全研究人员的挖洞效率。
Install
- download or build soot-fact-generator.jar
- install souffle
- install neo4j
Docker
you can use the docker we builded like docker-compose.yml
Features
Usage
见docs文件夹
Support
在使用中遇到什么问题,可以通过
三种途径向我们反馈
Plugin
- IDEA
- ByteCodeDL helper BDLH
- Datalog language plugin intellij-datalog
Acknowledgement
- 感谢南大的李樾和谭添两位老师,通过他们开设的程序分析课程入门了静态分析这一领域。
- 感谢Doop , 提供了soot-fact-generator.jar 。