• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

Reverse Engineering Reko v0.9.3 - a binary decompiler

Status
Not open for further replies.

itsMe

*KillmeMories*
Staff member
Administrator
Super Moderator
Hacker
Specter
Crawler
Shadow
Joined
Jan 8, 2019
Messages
56,623
Solutions
2
Reputation
32
Reaction score
100,456
Points
2,313
Credits
32,750
‎6 Years of Service‎
 
76%
mem-map-full.png


Reko (Swedish: “decent, obliging”) is a C# project containing a decompiler for machine code binaries. This project is freely available under the GNU General Public License.

The project consists of front ends, the core decompiler engine, and back ends to help it achieve its goals. A command-line, a Windows GUI, and an ASP.NET front end exist at the time of writing. The decompiler engine receives inputs from the front ends in the form of either individual executable files or decompiler project files. Reko project files contain additional information about a binary file, helpful to the decompilation process or for formatting the output. The decompiler engine then proceeds to analyze the input binary.

Reko has the ambition of supporting decompilation of various processor architectures and executable file formats with minimal user intervention.

Reko consists of a central .NET assembly Reko.Decompiler.dll which contains the central core logic. Leaving aside the user interface for a moment, the Reko can at a glance be considered a pipeline. The first stage of the pipeline loads the executable we wish to decompile. Later stages perform different kinds of analyses, extracting information from the machine language where they can and aggregating it into structured information (such as Procedures and data types). The final stage is the output stage, where the source code is emitted into files.

A central tenet is that Reko is extensible: wherever possible, we strive to avoid hard-coding knowledge about specific platforms, processors, or file formats in the core decompiler. Instead, such special knowledge is farmed out in separate assemblies. Examples:

    Reko.Arch.X86.dll – provides support for disassembling Intel X86 binaries.
    Reko.ImageLoaders.MzExe.dll – understands how to load MS-DOS executable files and all related formats
    Reko.ImageLoaders.Elf.dll – understands the ELF executable file format.

Changelog v0.9.3

    This is the last time Reko is released for .NET Framework and Mono. Future releases will be based on .NET Core and .NET 5

    The release consists of minor feature enhancements and bug fixes.

        Initial support for IA-64 and v850 support
        Support for the MIL-STD-1750, XCore-200, CompactRisc, MCore and Hexagon architectures
        Rewrite Reko’s MemoryArea abstraction to support non-byte-oriented archictectures (like Cray YMP and MIL-STD-1750)
        As usual, more x86 rewriters (with thanks to @smx-smx)
        Improved Sparc, zSeries, and Risc-V disassemblers
        Fuse adjacent memory accesses
        x86 and GUI support for specifying separate architecture models.
        Unpacker script for Exepack 3.60 et al.
        Loader for preprocessed C headers, making it possible to use such headers as metafiles in Reko projects (with thanks to @ptomin)
        User-supplied labels (#987)
        Register Values dialog (#950)
        Support for the TekHex and LDM text file formats
        Support for Unicos binary executables.
        Support for PharLap DOS Extender executables (with thanks to @gbody)


To see this hidden content, you must like this content.
 
Status
Not open for further replies.
Back
Top