/REpsych

Psychological warfare in reverse engineering

Primary LanguageAssemblyBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

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).