Coder Social home page Coder Social logo

crackercat / dyntainttracer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vanhauser-thc/dyntainttracer

0.0 0.0 0.0 43 KB

a tain tracer based on DynamoRIO, currently ARM only

License: GNU Affero General Public License v3.0

CMake 0.30% Makefile 0.27% C++ 11.48% C 87.67% Shell 0.27%

dyntainttracer's Introduction

dynTaintTracer

a tain tracer based on DynamoRIO, currently ARM only (but might already work with AARCH64 too). I wrote this in Summer 2018 for a few automotive pentest/reversing projects, but what the heck, lets release this to the world as others might find it useful too.

Note the AGPL3 license.

Building dynTaintTracer

  1. set the environment variable DYNAMORIO_HOME to the build directory of DynamoRIO.
  2. type make and sudo make install

You must compile on ARM (not Intel!) (and might work on AARCH64)

Running

Use the helper script dynTaintTracer.sh. The following options are supported:

--taint-accept	 taint accept() and recvfrom()
--taint-connect	 taint connect() sendto()
--taint-sslread	 taint SSL_read()
--taint-stdin	 taint stdin
--taint-file     taint reads from this file
--workaround	 work around a bug in dynamorio concerning strex
--report-debug	 debug output
--report-unknown report unknown instructions
--report-problem report problems
--report-untaint report untainting instructions
--trace-inst	 report all instructions when there is taint
--trace-bb	 report all basic blocks when there is taint
--trace-indirect report all indirect call/jmp when there is taint
--outfile	 where to write the trace output to

e.g.

# dynTaintTracer.sh --taint-file /tmp/foo.txt --outfile /tmp/trace.log --report-untaint -- /target/program -f /tmp/foo.txt

And then?

You can load the results into IDA with the included IDC script dynTaintTracer.idc. Just run the script which opens a file select window, select the trace and it is then applied to the loaded binary.

Caveats

Works fine, but neon instructions are not supported currently.

Future

It is easy to expand to AMD64, i686, etc. - "just" the instructions have to be added to ops_intel.c and for AARCH64 to ops_aarch.c.

dyntainttracer's People

Contributors

vanhauser-thc avatar

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.