1. Either download and unpack a pre-built package from the following list, or build and install the decompiler by yourself (the process is described below):
2. Install [Microsoft Visual C++ Redistributable for Visual Studio 2015](https://www.microsoft.com/en-us/download/details.aspx?id=48145).
3. Install [MSYS2](http://www.msys2.org/) and other needed applications by following RetDec's [Windows environment setup guide](https://github.com/avast-tl/retdec/wiki/Windows-Environment).
* Microsoft Visual C++ (version >= Visual Studio 2015 Update 2)
* [Git](https://git-scm.com/)
* [MSYS2](http://www.msys2.org/) and some other applications. Follow RetDec's [Windows environment setup guide](https://github.com/avast-tl/retdec/wiki/Windows-Environment) to get everything you need on Windows.
* [Active Perl](https://www.activestate.com/activeperl). It needs to be the first Perl in `PATH`, or it has to be provided to CMake using `CMAKE_PROGRAM_PATH` variable, e.g. `-DCMAKE_PROGRAM_PATH=/c/perl/bin`.
**Warning: Currently, RetDec has to be installed into a clean, dedicated directory. Do NOT install it into `/usr`, `/usr/local`, etc. because our build system is not yet ready for system-wide installations. So, when running `cmake`, always set `-DCMAKE_INSTALL_PREFIX=<path>` to a directory that will be used just by RetDec. For more details, see #12.**
*`-DCMAKE_INSTALL_PREFIX=<path>` to set the installation path to `<path>`.
* (Windows only) `-G<generator>` is `-G"Visual Studio 14 2015"` for 32-bit build using Visual Studio 2015, or `-G"Visual Studio 14 2015 Win64"` for 64-bit build using Visual Studio 2015. Later versions of Visual Studio may be used.
You can pass the following additional parameters to `cmake`:
*`-DRETDEC_DOC=ON` to build with API documentation (requires Doxygen and Graphviz, disabled by default).
*`-DRETDEC_TESTS=ON` to build with tests, including all the tests in dependency submodules (disabled by default).
*`-DCMAKE_BUILD_TYPE=Debug` to build with debugging information, which is useful during development. By default, the project is built in the `Release` mode. This has no effect on Windows, but the same thing can be achieved by running `msbuild` with the `/p:Configuration=Debug` parameter.
*`-DCMAKE_PROGRAM_PATH=<path>` to use Perl at `<path>` (probably useful only on Windows).
## Repository Overview
This repository contains the following libraries:
*`bin2llvmir` -- library of LLVM passes for translating binaries into LLVM IR modules.
*`debugformat` -- library for uniform representation of DWARF and PDB debugging information.
*`dwarfparser` -- library for high-level representation of DWARF debugging information.
*`llvm-support` -- set of LLVM related utility functions.
*`llvmir2hll` -- library for translating LLVM IR modules to high-level source codes (C, Python-like language).
This repository contains the following tools:
*`bin2llvmirtool` -- frontend for the `bin2llvmir` library.
*`llvm2hlltool` -- frontend for the `llvmir2hll` library.
This repository contains the following scripts:
*`decompile.sh` -- the main decompilation script binding it all together. This is the tool to use for full binary-to-C decompilations.
* Support scripts used by `decompile.sh`:
*`color-c.py` -- decorates output C sources with IDA color tags -- syntax highlighting for IDA.
*`config.sh` -- decompiler's configuration file.
*`decompile-archive.sh` -- decompiles objects in the given AR archive.
*`fileinfo.sh` -- a Fileinfo tool wrapper.
*`signature-from-library.sh` -- extracts function signatures from the given library.
*`unpack.sh` -- tries to unpack the given executable file by using any of the supported unpackers.
* Other utility scripts:
*`decompile-all.sh` -- decompiles all executables in the given directory and subdirectories.
*`run-unit-test.sh` -- run all tests in the unit test directory.
* [RetDec IDA plugin](https://github.com/avast-tl/retdec-idaplugin) -- embeds RetDec into IDA (Interactive Disassembler) and makes its use much easier.
* [RetDec Regression Tests](https://github.com/avast-tl/retdec-regression-tests-framework) -- provides means to run and create regression tests for RetDec and related tools. This is a must if you plan to contribute to the RetDec project.
## License
Copyright (c) 2017 Avast Software, licensed under the MIT license. See the `LICENSE` file for more details.
RetDec uses third-party libraries or other resources listed, along with their licenses, in the `LICENSE-THIRD-PARTY` file.
## Contributing
See [RetDec contribution guidelines](https://github.com/avast-tl/retdec/wiki/Contribution-Guidelines).
## Acknowledgements
This software was supported by the research funding TACR (Technology Agency of the Czech Republic), ALFA Programme No. TA01010667.