Apache License 2.0

项目介绍

AngoraFuzzer/Angora 是一个托管在 GitHub 上的开源项目,主要使用 C++ 编写,采用 Apache License 2.0 许可证,目前获得 953 个 Star、170 次 Fork。

仓库全名
AngoraFuzzer/Angora
开源许可证
Apache License 2.0
Star 数
953
Fork 数
170
未关闭 Issue
41

README 摘要

Angora Angora is a mutation-based coverage guided fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution. Published Work Arxiv: Angora: Efficient Fuzzing by Principled Search, S&P 2018. Building Angora Build Requirements Linux-amd64 (Tested on Ubuntu 16.04/18.04 and Debian Buster) Rust stable (>= 1.31), can be obtained using rustup LLVM 4.0.0 - 12.0.1…

完整内容见 GitHub 原始 README 或本页 。

常见问题

Angora 用什么语言开发?

主要使用 C++ 编写,采用 Apache License 2.0 许可证,目前有 953 个 Star。

Angora 可以免费商用吗?

仓库采用 Apache License 2.0 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 Angora 的源码?

可以直接克隆仓库:git clone https://github.com/AngoraFuzzer/Angora.git;安装与运行步骤见仓库 README。

Angora 最近还在维护吗?

仓库最近一次更新为 2022年7月18日,当前有 41 个未关闭 Issue;Star 数为 953,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Angora is a mutation-based fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
2246
价值分
716
活跃状态
活跃

README

Angora

License Build Status

Angora is a mutation-based coverage guided fuzzer. The main goal of Angora is to increase branch coverage by solving path constraints without symbolic execution.

Published Work

Arxiv: Angora: Efficient Fuzzing by Principled Search, S&P 2018.

Building Angora

Build Requirements

  • Linux-amd64 (Tested on Ubuntu 16.04/18.04 and Debian Buster)
  • Rust stable (>= 1.31), can be obtained using rustup
  • LLVM 4.0.0 - 12.0.1 : run PREFIX=/path-to-install ./build/install_llvm.sh.

Environment Variables

Append the following entries in the shell configuration file (~/.bashrc, ~/.zshrc).

export PATH=/path-to-clang/bin:$PATH
export LD_LIBRARY_PATH=/path-to-clang/lib:$LD_LIBRARY_PATH

Fuzzer Compilation

The build script will resolve most dependencies and setup the runtime environment.

./build/build.sh

System Configuration

As with AFL, system core dumps must be disabled.

echo core | sudo tee /proc/sys/kernel/core_pattern

Test

Test if Angora is builded successfully.

cd /path-to-angora/tests
./test.sh mini

Running Angora

Build Target Program

Angora compiles the program into two separate binaries, each with their respective instrumentation. Using autoconf programs as an example, here are the steps required.

# Use the instrumenting compilers
CC=/path/to/angora/bin/angora-clang \
CXX=/path/to/angora/bin/angora-clang++ \
LD=/path/to/angora/bin/angora-clang \
PREFIX=/path/to/target/directory \
./configure --disable-shared

# Build with taint tracking support 
USE_TRACK=1 make -j
make install

# Save the compiled target binary into a new directory
# and rename it with .taint postfix, such as uniq.taint

# Build with light instrumentation support
make clean
USE_FAST=1 make -j
make install

# Save the compiled binary into the directory previously
# created and rename it with .fast postfix, such as uniq.fast

If you fail to build by this approach, try wllvm and gllvm described in Build a target program.

Also, we have implemented taint analysis with libdft64 instead of DFSan (Use libdft64 for taint tracking).

Fuzzing

./angora_fuzzer -i input -o output -t path/to/taint/program -- path/to/fast/program [argv]

For more information, please refer to the documentation under the docs/ directory.

评论

暂无评论