# neuzz
**Repository Path**: ausmith/neuzz
## Basic Information
- **Project Name**: neuzz
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2022-03-10
- **Last Updated**: 2024-07-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# NEUZZ: a neural-network-assisted fuzzer (S&P'19)
See IEEE S&P(Oakland)'19 [slides](https://drive.google.com/file/d/1_A33wucTOA2nZpKVArvsXajh-2LNrCZK/view?usp=sharing) and paper [NEUZZ: Efficient Fuzzing with Neural Program Smoothing](https://arxiv.org/abs/1807.05620) for details.
## Prerequisite
Tested on a machine with Nvidia 1080Ti, Ubuntu 16.04/18.04, Tensorflow 1.8.0 and Keras 2.2.3.
We recommend running NEUZZ on a machine with a Nvidia 1080Ti or higher for efficient NN training.
- Python 2.7
- Tensorflow
- Keras
## Build
```bash
gcc -O3 -funroll-loops ./neuzz.c -o neuzz
```
## Usage
We use a sample program readelf as an example.
Open a terminal, start nn module
```bash
#python nn.py [program [arguments]]
python nn.py ./readelf -a
```
open another terminal, start neuzz module.
```bash
#./neuzz -i in_dir -o out_dir -l mutation_len [program path [arguments]] @@
./neuzz -i neuzz_in -o seeds -l 7506 ./readelf -a @@
```
If you want to try NEUZZ on a new program,
1. Compile the new program from source code using afl-gcc.
2. Collect the training data by running AFL on the binary for a while(about an hour), then copy the queue folder to neuzz_in.
3. Follow the above two steps to start NN module and NEUZZ module.
## Sample programs
Try 10 real-world programs on NEUZZ. Check setup details at programs/[program names]/README.
## Contact
Feel free to send me email about Neuzz. dongdong at cs.columbia.edu