REC Studio is an interactive decompiler.

It reads a Windows, Linux, Mac OS X or raw executable file, and attempts to produce a C-like representation of the code and data used to build the executable file.

It has been designed to read files produced for many different targets, and it has been compiled on several host systems.

REC Studio 4 is a complete rewrite of the original REC decompiler. It uses more powerful analysis techniques such as partial Single Static Assignment (SSA), allows loading Mac OS X files and supports 32 and 64 bit binaries.

Although still under development, it has reached a stage that makes it more useful than the old Rec Studio 2.

Rec Studio 2 pages are here

Features

As mentioned, Rec Studio 4 is still under development. Most target independent features have been completed, such as:

Multihost: Rec Studio runs on Windows XP/Vista/7, Ubuntu Linux, Mac OS X .

. Symbolic information support using Dwarf 2 and partial recognition of Microsoft's PDB format.

and partial recognition of format. C++ is partially recognized: mangled names generated by gcc are demangled, as well as inheritance described in dwarf2 is honored. However, C++ is a very broad and difficult language, so some features like templates won't likely be ever supported.

is partially recognized: mangled names generated by gcc are demangled, as well as inheritance described in dwarf2 is honored. However, C++ is a very broad and difficult language, so some features like templates won't likely be ever supported. Types and function prototype definitions can be specified in text files. Some standard Posix and Windows APIs are already provided in the Rec Studio package.

Interactivity is supported, limited to definition of sections, labels and function entry points. Will need to improve it to support in-program definition of types and function parameters.

This table shows the target-specific features that have been implemented so far:

Feature x86 (ia32) x86_64 Mips PowerPC mc68k ARM Disassembler Done Done Done Done Done Planned PE COFF loader Done Done n/a n/a n/a n/a ELF loader Done Done Done Done Done Planned COFF loader Done n/a n/a n/a Done n/a Mac OS X loader Done Done n/a Planned n/a Planned Dwarf2 symbolic information Done Done Done Done n/a Planned COFF symbolic information Planned n/a n/a n/a Planned n/a Calling conventions In progress In progress In progress Planned Planned Planned 32 and 64 bits In progress In progress n/a n/a n/a n/a Floating-point Planned Planned n/a n/a n/a n/a Windows Debugger In progress Planned n/a n/a n/a n/a Gdb Debugger In progress In progress n/a n/a n/a n/a

REC sources are not in the public domain.

Although REC can read Win32 executable (aka PE) files produced by Visual C++ or Visual Basic 5, there are limitations on the output produced. REC will try to use whatever information is present in the .EXE symbol table. If the .EXE file was compiled without debugging information, if a program data base file (.PDB) or Codeview (C7) format was used, or if the optimization option of the compiler was enabled, the output produced will not be very good. Moreover, Visual Basic 5 executable files are a mix of Subroutine code and Form data. It is almost impossible for REC to determine which is which. The only option is to use a .cmd file and manually specify which area is code and which area is data.

In practice, only C executable files produce meaningful decompiled output .



