All Projects → tracer-x → TRACER

tracer-x / TRACER

Licence: other
TRACER Symbolic Execution Tool

Programming Languages

c
50402 projects - #5 most used programming language
ocaml
1615 projects
CLIPS
21 projects
prolog
421 projects
SWIG
194 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to TRACER

Exrop
Automatic ROPChain Generation
Stars: ✭ 191 (+730.43%)
Mutual labels:  symbolic-execution
UTBotCpp
Tool that generates unit test by C/C++ source code, trying to reach all branches and maximize code coverage
Stars: ✭ 59 (+156.52%)
Mutual labels:  symbolic-execution
vigor
Main repository of the Vigor NF verification project.
Stars: ✭ 40 (+73.91%)
Mutual labels:  symbolic-execution
Alive2
Automatic verification of LLVM optimizations
Stars: ✭ 199 (+765.22%)
Mutual labels:  symbolic-execution
Miasm
Reverse engineering framework in Python
Stars: ✭ 2,649 (+11417.39%)
Mutual labels:  symbolic-execution
stevia
A simple (unfinished) SMT solver for QF_ABV.
Stars: ✭ 30 (+30.43%)
Mutual labels:  symbolic-execution
Sys
Sys: A Static/Symbolic Tool for Finding Good Bugs in Good (Browser) Code
Stars: ✭ 149 (+547.83%)
Mutual labels:  symbolic-execution
seninja
symbolic execution plugin for binary ninja
Stars: ✭ 123 (+434.78%)
Mutual labels:  symbolic-execution
Angryghidra
Use angr in Ghidra
Stars: ✭ 241 (+947.83%)
Mutual labels:  symbolic-execution
CRAX
CRAX: software CRash analysis for Automatic eXploit generation
Stars: ✭ 44 (+91.3%)
Mutual labels:  symbolic-execution
Symgdb
SymGDB - symbolic execution plugin for gdb
Stars: ✭ 202 (+778.26%)
Mutual labels:  symbolic-execution
Idangr
Use angr in the IDA Pro debugger generating a state from the current debug session
Stars: ✭ 214 (+830.43%)
Mutual labels:  symbolic-execution
crete-dev
CRETE under development
Stars: ✭ 56 (+143.48%)
Mutual labels:  symbolic-execution
Manticore
Symbolic execution tool
Stars: ✭ 2,599 (+11200%)
Mutual labels:  symbolic-execution
CFI-LB
Adaptive Callsite-sensitive Control Flow Integrity - EuroS&P'19
Stars: ✭ 13 (-43.48%)
Mutual labels:  symbolic-execution
Kleefl
Seeding fuzzers with symbolic execution
Stars: ✭ 172 (+647.83%)
Mutual labels:  symbolic-execution
angr-antievasion
Final project for the M.Sc. in Engineering in Computer Science at Università degli Studi di Roma "La Sapienza" (A.Y. 2016/2017).
Stars: ✭ 35 (+52.17%)
Mutual labels:  symbolic-execution
symbooglix
Symbolic Execution Engine for Boogie
Stars: ✭ 24 (+4.35%)
Mutual labels:  symbolic-execution
surveyor
A symbolic debugger for C/C++ (via LLVM), machine code, and JVM programs
Stars: ✭ 14 (-39.13%)
Mutual labels:  symbolic-execution
sai
Staged Abstract Interpreters
Stars: ✭ 58 (+152.17%)
Mutual labels:  symbolic-execution

TRACER Symbolic Execution Tool

Copyright 2008-2016 National University of Singapore. All rights reserved.

See LICENSE.md for license information of TRACER. This distribution contains third party software. See lib/LICENSE for the copyright and license information of the included third-party software.

This is a version of TRACER symbolic execution tool with CIL front-end. Chu Duc Hiep, Joxan Jaffar, Rasool Maghareh, Vijayaraghavan Murali, Jorge Navas, Andrew Santosa, and Razvan Voicu contributed to its initial development.

Much appreciated feedbacks have been provided by Jia Su.

Prerequisites

  • jdk >= 1.5
  • ant >= 1.7.0
  • gpp >= 2.24
  • ocaml >= 3.12.1 (for CIL)

Installation by Building TRACER Distribution

This version of TRACER may not have all the features, but it has the interpolation (abstraction learning) algorithm for search-space reduction already implemented. For running on Linux/x86 systems, execute ant dist to create tracer-0.1.tar.gz tracer distribution package in the source root. Unpack tracer-0.1.tar.gz into your preferred directory, say <some_prefix> and follow further instructions in <some_prefix>/tracer-0.1/README.

Running TRACER in the Source Tree

This version is more advanced and has more features.

  1. Set up environment variables TRACER_PATH and CLPR_BASE_PATH.

    For instance, in bash:

    export TRACER_PATH=<some_prefix>/tracer
    export CLPR_BASE_PATH=<some_prefix>/tracer/src
    

    For convenience, add to PATH the directory $TRACER_PATH/bin

  2. Build CLP(R):

    cd $TRACER_PATH/src/clpr-1.2b
    make
    
  3. Build cilly if necessary. There is a pre-built cilly in both $TRACER_PATH/lib and $TRACER_PATH/bin for Linux x86_64, however, you can build it in the following way:

    cd $TRACER_PATH/lib/cil-1.3.7
    ./configure && make
    cp obj/x86_LINUX/cilly.asm.exe $TRACER_PATH/bin/cilly
    cp obj/x86_LINUX/cilly.asm.exe $TRACER_PATH/lib/cilly
    

    Note CIL needs OCaml. We tried with 3.11 but it does not work. The version we tested is 3.12.1

  4. Run one of the following scripts:

    • tracer - run TRACER from the command line. You need to specify which analysis to run. For example tracer slicer will run the slicer. Run tracer -help for help on how to run the script.
    • gtracer - run TRACER using a GUI
    • cilly - run CIL (part of the compiler)

    Some utilities:

    • c2c - output the symbolic execution tree in C format.
    • allfigs2pdf - convert all dot files into pdf and open them using a pdf reader.

Files and Directories

  • build.xml
  • classes - contains all *.class of the system (GENERATED AUTOMATICALLY)
  • lib - contains *.jar files
  • bin - contains all scripts
  • dist - tools to generate the distribution version
  • src
    • compiler/antlr - contains the compiler from C to CLP
    • compiler/GUIFrontEnd - contains the GUI front end of the system
    • interpreter - contains the interpreter that runs the CLP program

Asked Questions

  • Q: Where are the benchmark programs used in SAS '12 paper: ''Path-Sensitive Backward Slicing'', and how to run the slicer?
    A: The programs are:

    • mpeg: src/interpreter/tests/SLICING/MACRO_TESTS/mpeg/mpeg.c
    • diskperf: src/interpreter/tests/SLICING/MACRO_TESTS/diskperf.c
    • floppy: src/interpreter/tests/SLICING/MACRO_TESTS/floppy.c
    • cdaudio: src/interpreter/tests/SLICING/MACRO_TESTS/cdaudio.c
    • serial: src/interpreter/tests/SLICING/MACRO_TESTS/serial.c
    • fcron-2.9.5: src/interpreter/tests/SLICING/MACRO_TESTS/fcron/fcron-instrumented-sliced.c

    To run the slicer, say tracer slicer <program_name>, where <program_name> is a C program name.

Contact

Joxan Jaffar, email: [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].