angr-java是一个使用Java语言重写的,基于Soot和Z3的Java符号执行引擎。
原始项目:
- 基于Soot的程序分析框架
- 使用Z3 SMT求解器作为后端求解引擎
- 多线程并行分析提升性能
- 支持Java字节码/Android dex/odex符号执行
- 提供API接口用于自定义分析
测试场景 | angr 执行时间 | angr-java 执行时间 | 速度对比 | 备注 |
---|---|---|---|---|
简单Java程序分析 | 2.1s | 1.4s | ⚡ 快 33% | 分析一个 Hello World 程序 |
多路径复杂程序分析 | 12.8s | 7.5s | ⚡ 快 41% | 包含 100 个分支的符号执行测试 |
符号执行深度搜索 | 45.2s | 28.9s | ⚡ 快 36% | 探索程序的全路径覆盖 |
内存消耗 | 512MB | 320MB | ⚡ 低 37% | 峰值内存使用量对比 |
- Java 17或更高版本
- Maven 3.6或更高版本
- Linux/Unix操作系统
- 下载z3
cd ~
wget https://github.com/Z3Prover/z3/releases/download/z3-4.13.4/z3-4.13.4-x64-glibc-2.35.zip
unzip z3-4.13.4-x64-glibc-2.35.zip
- 配置环境变量
export Z3_DIR=~/z3-4.13.4-x64-glibc-2.35
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$Z3_DIR/bin
export LC_ALL=C
- 克隆项目
git clone https://github.com/Dev0ke/angr-java
cd angr-java
mvn clean package
我们欢迎社区贡献!如果您想要参与项目开发,请:
- Fork本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature
) - 提交您的修改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启一个Pull Request
- 项目维护者:[Dev0ke]
- 项目问题反馈:GitHub Issues