GithubHelp home page GithubHelp logo

ncatlin / rgat Goto Github PK

View Code? Open in Web Editor NEW
361.0 24.0 32.0 112.36 MB

An instruction trace visualisation tool for dynamic program analysis

License: Apache License 2.0

C++ 4.71% C 0.08% Assembly 11.38% Batchfile 0.01% C# 82.88% GLSL 0.87% HLSL 0.03% Metal 0.03%

rgat's Introduction

MSBuild

Note: rgat is an active research project that has emerged from a long re-write. 0.6.X will be a series of preview builds. Don't let the flashy videos entice you into thinking that it will be useful on real targets

Look here for documentation

rgat is a dynamic binary analysis tool for gathering and visualising instruction traces. It is intended to help software reverse engineers in bridging the gap between the high level API view of malware sandboxes and the low level function view of disassemblers and decompilers - particularly where code obfuscation is present.

Switching between different plots

Different layouts

The UI with a heatmap graph Find busy areas with a heatmap render

rgat_upx_24436_1103_211158.mp4

Live cylinder plot of UPX packing a binary

rgat_BlockingAPI_37092_1101_191127.mp4
'Detonate' malware into a force-directed graph layout

Features

  • GPU accelerated graph layout
  • Thread preview graphs
  • Trace animation replay
  • Heatmap generation
  • API recording
  • Signature scanning with YARA and partial Detect-It-Easy support
  • Customisable instrumentation (module granularity)
  • Remote tracing - perform tracing in real time over a network

See the Changelog for a full list of features

See the Trello for the features under development or scheduled to be worked on and known bugs

It currently supports 32 and 64 bit Windows EXE's and DLL's, but it now runs on .NET so Linux support should be slightly less distant that it was a while ago. It won't work very well with .NET apps.

Requirements and Installation

The two main requirements for 0.6.0 are:

  • Windows, with the ability to run .NET 5 programs
  • For the computer running the visualiser: A GPU with Vulkan driver support (ie: this test program works)
To install
  • If .NET 5+ isn't installed, install it(run console apps -> x64). If nothing happens then running rgat in the console will tell you if this is the problem.
  • Download the latest release - currently 0.6.0
  • Unzip rgat.exe into its own directory
  • Run rgat.exe - it will unpack the tools it needs into the directory it is launched in
  • Configure it to your liking in the settings

If nothing else you may want to get familiar with the graph manipulation controls

To trace something
  • Drag and drop a binary onto the UI
  • Click 'Start Trace'

Documentation

Known Issues

  • Pin's file API doesn't play well with named pipes, so an unsafe API has to be used causing some traces to fail to start (especially .NET programs)
  • A console window opens with rgat to enable interaction with console-enabled targets. Selecting text will hang the UI on any output until the selection is cleared - which might happen at startup.

Technologies

A full list and discussion of libraries can be found in the development documentation

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.