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.
These are some of REC's features:
Multitarget : REC can decompile 386 (x86 and x86_64), 68k, PowerPC MIPS R3000 and Sparc programs.
Multiformat : REC recognizes the following file formats:
ELF (System V Rel. 4, e.g. Linux, Solaris etc.)
PE (Win32 .EXE and .DLL for Microsoft Windows 95 and XP)
Raw binary data (via .rpj files)
Multihost : REC is available for Linux (i386), Windows XP and Mac OS X 10.6
Symbolic : Supports high-level symbolic information definition in ELF/Dwarf2 with partial support for reading Microsoft's PDB files. Type files in text format (as output by GNU's objdump) allow end-user definition of types without the need to compile to ELF/Dwarf2. Older formats (COFF, STABS) will be added in the near future.
Interactive : the user can inspect the generated code and provide and save information to help improve the quality of the decompiled output.
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.