Psychological warfare in reverse engineering
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is even with Battelle:master.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
code Initial commit Aug 9, 2015
examples update readme and examples Dec 31, 2015
gen Initial commit Aug 9, 2015
gfx Improve build process Aug 9, 2015
slides Add DEF CON slides Aug 12, 2015
LICENSE update readme and examples Dec 31, 2015
Makefile Improve build process Aug 9, 2015
README.md update readme and examples Dec 31, 2015
repsych.asm Initial commit Aug 9, 2015

README.md

REpsych

: Psychological Warfare in Reverse Engineering

github.com/xoreaxeaxeax/repsych // domas // @xoreaxeaxeax

Overview

The REpsych toolset is a proof-of-concept illustrating the generation of images through a program's control flow graph (CFG).

A typical function's CFG A REpsych generated CFG
cfg repsych

There is no specific point to the project (other than to show that it can be done), but possible (non-serious) applications are outlined in the DEF CON presentation.

The program works reliably with all tested versions of the IDA Pro reverse engineering tool, and semi-reliably with other CFG viewers (Hopper, BinNavi, radare2, etc).

Usage

The toolset translates source images into functioning programs, such that the program's control flow graph generates the source image.

To generate a new program from an image:

  • Save the image in the gfx/ folder as a 24 BPP bitmap.
  • Run "make image" in the root directory of the project, where "image" is the name of your image, without the extension.

Two functioning programs will be created: repsych_v1 and repsych_v2. Each uses a different strategy for ensuring the CFG renderer correctly places the CFG nodes.

Tips

The tool will create a basic block (CFG node) for each pixel of the source image; as such, you should try to use small source images (not larger than 100x100), and you may need to increase the number of allowed nodes in your CFG viewer.

When using an image of text as input to the tool, first convert the image to a 2 BPP black and white bitmap first, then to a 24 BPP bitmap; this will remove non black and white colors, and give the best results in the control flow graph.

Examples

Example 1

Example 4

Example 3

Example 2

Example 5

References

The technique is outlined in detail in the DEF CON presentation.

Slides from the presentation are provided here.

Author

REpsych is a proof-of-concept from Christopher Domas (@xoreaxeaxeax).