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 。