Giter VIP home page Giter VIP logo

pathgrind's Introduction

pathgrind Build Status

DOI

Path based Dynamic Analysis (Works for 32-bit programs only)

Requirements

  • bzip2
  • autoconf
  • make
  • gcc
  • python
  • gawk
  • 32 bit libraries for ubuntu (sudo apt-get install ia32-libs)
  • 32 bit c library for building c programs for testing with pathgrind (sudo apt-get install libc6-dev-i386)

On ubuntu you can install the dependencies using apt-get, e.g. sudo apt-get install autoconf

Installation

$ ./install.sh

Configuration

Configuration file: fuzz/settings.cfg

Execution

CLI: $ ./fuzz/fuzz.py

GUI: $ ./fuzz/gui.py

Example

$ ./fuzz/fuzz.py test6

New input are created in testcase/input/

Crash files are be saved in testcase/crash/

You can also read a fairly detailed tutorial on Pathgrind at the SRC:CLR blog

Publications

Exploiting Undefined Behaviors for Efficient Symbolic Execution, ICSE 2014

An Empirical Study of Path Feasibility Queries, CoRR 2013

A Critical Review of Dynamic Taint Analysis and Forward Symbolic Execution, Technical Report NUS 2012

pathgrind's People

Contributors

codelion avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pathgrind's Issues

Kernel 2.6 2.7

Hi,
I tried to build this, but the configure step says it only works with Kernel 2.6 or 2.7. Is there any reason for this?

configuration error: please use gcc >= 3.0 or clang >= 2.9

Good day,
I'm trying to get pathgrind to work on my machine but I keep getting the "configuration error: please use gcc >= 3.0 or clang >= 2.9" error even though I have installed version greater than the ones required.

Has anyone come across this and how did you fix it?

thanks

Install Bug

I have tried to install Pathgrind, and error occured while Valgrind compile.
I used Ubuntu 11.10, install all part that mentioned in README file.
...
Making install in .
make[3]: Entering directory /home/user/pathgrind-master/valgrind-r12356/memcheck' ../coregrind/link_tool_exe_linux 0x38000000 gcc -Wno-long-long -o memcheck-x86-linux -m32 -mpreferred-stack-boundary=2 -O2 -g -Wall -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -Wno-format-zero-length -fno-strict-aliasing -fno-builtin -O2 -static -nodefaultlibs -nostartfiles -u _start -Wl,--build-id=none -m32 memcheck_x86_linux-mc_leakcheck.o memcheck_x86_linux-mc_malloc_wrappers.o memcheck_x86_linux-mc_main.o memcheck_x86_linux-mc_translate.o memcheck_x86_linux-mc_machine.o memcheck_x86_linux-mc_errors.o ../coregrind/libcoregrind-x86-linux.a ../VEX/libvex-x86-linux.a -lgcc memcheck_x86_linux-mc_main.o: In functionset_sec_vbits8':
/home/user/pathgrind-master/valgrind-r12356/memcheck/mc_main.c:1030: undefined reference to __stack_chk_fail' memcheck_x86_linux-mc_main.o: In functionmc_post_reg_write':
/home/user/pathgrind-master/valgrind-r12356/memcheck/mc_main.c:3894: undefined reference to __stack_chk_fail' memcheck_x86_linux-mc_main.o: In functionmc_pre_reg_read':
/home/user/pathgrind-master/valgrind-r12356/memcheck/mc_main.c:3934: undefined reference to __stack_chk_fail' memcheck_x86_linux-mc_main.o: In functionhandle_gdb_monitor_command':
/home/user/pathgrind-master/valgrind-r12356/memcheck/mc_main.c:5256: undefined reference to __stack_chk_fail' memcheck_x86_linux-mc_main.o: In functionmoveLineForwards':
/home/user/pathgrind-master/valgrind-r12356/memcheck/mc_main.c:2119: undefined reference to __stack_chk_fail' ../coregrind/libcoregrind-x86-linux.a(libcoregrind_x86_linux_a-debuginfo.o):/home/user/pathgrind-master/valgrind-r12356/coregrind/m_debuginfo/debuginfo.c:2957: more undefined references to__stack_chk_fail' follow
collect2: ld returned 1 exit status
make[3]: *** [memcheck-x86-linux] Error 1
make[3]: Leaving directory /home/user/pathgrind-master/valgrind-r12356/memcheck' make[2]: *** [install-recursive] Error 1 make[2]: Leaving directory/home/user/pathgrind-master/valgrind-r12356/memcheck'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/user/pathgrind-master/valgrind-r12356'
make: *** [install] Error 2

I add latest version of Valgrind and remove r12356. It helps.

I try to run Pathgrind, described in README - and get this input:

user@ubuntu:~/pathgrind-master$ ./fuzz/fuzz.py test6
[+] expanding execution with file input2.txt
Traceback (most recent call last):
File "./fuzz/fuzz.py", line 530, in
search(target, worklist, [ None ] * 10)
File "./fuzz/fuzz.py", line 397, in search
child_inputs = expand_execution(input, callbacks)
File "./fuzz/fuzz.py", line 226, in expand_execution
pc = compute_path_constraint(input.filename)
File "./fuzz/fuzz.py", line 157, in compute_path_constraint
max_constraint=PARAM['MAX_BOUND'])
File "/home/user/pathgrind-master/fuzz/valgrind.py", line 327, in run_valgrind
p = subprocess.Popen(arg_valgrind + arg_prog, stdin=stdin, stdout=subprocess.PIPE, stderr=fp.fileno())
File "/usr/lib/python2.7/subprocess.py", line 679, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1239, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
What am I doing wrong?
Bets regards,
Nikolay

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.