Skip to content

sy-yyy/directed-neuzz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

directed-neuzz

主要的工作是基于aflgo的框架做的改进。 可按照aflgo的流程 1)获取cg、cfg图 2)将距离计算脚本替换为pre-dominate脚本,用于获取dominate节点 3)aflgo/llvm_mode下主要对afl-llvm-pass.so.cc 增加了获取dominate节点的插桩随机值的代码 4)nn1中添加了基于随机值计算出的一些边。

NEUZZ: a neural-network-assisted fuzzer (S&P'19)

See IEEE S&P(Oakland)'19 slides and paper NEUZZ: Efficient Fuzzing with Neural Program Smoothing 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

    gcc -O3 -funroll-loops ./neuzz.c -o neuzz

Usage

We use a sample program readelf as an example.
Open a terminal, start nn module

    #python nn.py [program [arguments]]
    python nn.py ./readelf -a

open another terminal, start neuzz module.

    #./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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published