Skip to content
ElectroPaint Automatic No-source Object reaSsembler (a MIPS to C decompiler)
C Python Assembly Perl
Latest commit 826beab May 5, 2014 @drvink initial commit
Failed to load latest commit information.
decomp initial commit May 5, 2014
gl initial commit May 5, 2014
goodies initial commit May 5, 2014
idabits initial commit May 5, 2014
notes initial commit May 5, 2014
.gitattributes initial commit May 5, 2014
.gitignore initial commit May 5, 2014
LICENSE.md initial commit May 5, 2014
README.md initial commit May 5, 2014
THANKS.md initial commit May 5, 2014
ep.h initial commit May 5, 2014
epanos.py initial commit May 5, 2014
overrides.h initial commit May 5, 2014

README.md

EPANOS

the ElectroPaint *Automatic No-source Object reaSsembler

a backronym; see THANKS.md

Who?

http://github.com/drvink

What?

This is a very dumb MIPS to C static translator. Consider it a proof of concept, as it has successfully worked on at least one non-trivial program.

When?

From December 2013 to March 2014.

Where?

Tokyo.

How?

You will need a version of IDA that is not yet public. Whatever version comes after 6.5 should contain all the fixes that are needed to produce the code used in ElectroPortis.

The decompiler depends on these libraries:

The decompiler is not a push-button solution: some small annotations to the IDA database were needed to produce fully-working code. If you wish to use it on your own target, you will probably want to modify it to do data/bss segment extraction in a saner way. The easiest thing would probably be to just lift them out and treat them opaquely, i.e. as a char[], and then handle endianness issues accordingly.

Why?

People have wanted ElectroPaint (the real thing, not a clone) on something other than IRIX for longer than your author (of the decompiler) has been alive. Someone had to do it.

Python?

    __           __
   /..\        /| |'-.
   \O_/.       || |   |   OH WOW
   _.'  \ _    \|_|_.-'  DYNAMIC TYPING
.='.__/  \ |     _) (_
     |\_. \| |"""""""""|  LET ME OUT
     /`  .'| |         |   OF THIS
     \ \"""; |         |
     )\ \  | |.-------.|
     '`_`  ' "         "

This was an experiment. The two options that did not require writing bindings for IDA were C++ and Python. I don't think I'll use Python again for personal projects in the future, and I should have written IDA bindings to a statically typed language (other than C++).

Something went wrong with that request. Please try again.