uxmal/reko
GitHub: uxmal/reko
一款开源的通用二进制反编译器,支持多种处理器架构和可执行文件格式,将机器代码还原为可读的高级语言表示。
Stars: 2561 | Forks: 268
# reko - 通用反编译器
[](https://cirrus-ci.com/github/uxmal/reko)
[](https://github.com/uxmal/reko/actions/workflows/reko.yml)
[](https://discord.gg/9PMWVxEjqr)
[](https://gitter.im/uxmal/reko?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
**Reko**(瑞典语:“得体、亲切”)是一个针对机器代码二进制文件的反编译器。
本项目基于 GNU General Public License 免费提供。
该项目由前端、核心反编译引擎和后端组成,以帮助实现其目标。在撰写本文时,已存在命令行、Windows GUI 和 ASP.NET 前端。反编译引擎以前端输入的形式接收数据,这些输入可以是单个可执行文件或反编译项目文件。Reko 项目文件包含有关二进制文件的附加信息,这些信息有助于反编译过程或格式化输出。随后,反编译引擎将继续分析输入的二进制文件。
Reko 致力于在最少用户干预的情况下支持对各种处理器架构和可执行文件格式的反编译。有关完整列表,请参阅[支持的二进制文件](https://github.com/uxmal/reko/wiki/Supported-binaries)页面。
请注意,许多软件许可协议禁止对其机器代码二进制文件进行反编译或其他逆向工程。仅当您拥有反编译该二进制文件的合法权利时才使用此反编译器(例如,该二进制文件是您自己开发的)。
## 下载 Reko
官方版本每隔几个月会在 [Github](https://github.com/uxmal/reko/releases) 和 [SourceForge](https://sourceforge.net/projects/decompiler/files/) 上发布。
无法或不愿自行构建 Reko 的用户,可以下载 [Cirrus CI 集成构建器](https://cirrus-ci.com/github/uxmal/reko) 或 [Github Actions 集成构建器](https://github.com/uxmal/reko/actions/workflows/reko.yml) 的输出产物。
当然,您也可以从源代码构建本项目:请参阅下面的“Hacking”。
## 安装 Reko
必须首先在您的计算机上安装以下必备软件:
* .NET 8.0 (https://www.microsoft.com/net/download/dotnet-framework-runtime)
下载合适的安装程序并在目标机器上运行。
安装完成后,您可以直接从集成构建服务器下载二进制文件,或者从源代码构建 Reko(请参阅下面的 `Hacking`)。
## 文档
要了解 Reko 的各种功能,您可以阅读[用户指南](doc/guide/reko.md)。如果您对项目的内部工作机制感兴趣,请参阅 wiki。
## 获取支持
您可以在[问题追踪器](https://github.com/uxmal/reko/issues)上报告遇到的任何问题或提出任何与 Reko 相关的问题。
您也可以尝试在 Reko 的 [Gitter.im](https://gitter.im/uxmal/reko) 聊天室寻求帮助。Reko 由志愿者在业余时间构建,因此请适当调整对响应时间的预期。
## Hacking
要构建 reko,请先克隆 https://github.com/uxmal/reko。您可以使用 IDE 或命令行来构建解决方案文件 `Reko-decompiler.sln`。Reko 需要 [.NET 8.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) 才能编译。如果您是 IDE 用户,请使用最新版本的 Visual Studio 2022。
如果您希望使用命令行进行构建,请使用以下命令
```
dotnet msbuild -p:Platform={platform} -p:Configuration={config} -v:m -t:build_solution -m ./src/BuildTargets/BuildTargets.csproj
```
将 `{config}` 替换为 `Debug` 或 `Release`,并将 `{platform}` 替换为 `x64` 或 `x86`。
**注意**:如果您仍然无法编译,请告诉我们,以便我们帮助您解决问题。
如果您有意贡献代码,请参阅[路线图](https://github.com/uxmal/reko/wiki/Roadmap)以探索您可以参与的领域。
[Wiki](https://github.com/uxmal/reko/wiki) 包含了更多关于 Reko 项目内部工作机制的信息。请查阅[风格指南](https://github.com/uxmal/reko/blob/master/doc/style.md)。
### 与 WiX 相关的警告和错误
如果您尚未在开发机器上安装 WiX toolset,在 Visual Studio 中加载解决方案时将会收到警告或错误。您可以安全地忽略这些警告;WiX toolset 仅在制作 MSI 安装包时使用。如果您已经能够编译项目,则无需构建安装程序:构建过程会将所有必需的文件复制到单个目录中。
如果您确实希望使用 WiX toolchain 构建 MSI 安装程序,可以从这里下载:
http://wixtoolset.org/releases/
### Visual Studio 中与 CMake 相关的错误
根据您的操作,Visual Studio 可能会尝试重新构建 NativeProxy,而这依赖于 CMake。您可以选择安装 [CMake](https://cmake.org/download/) 并确保将其添加到 PATH,或者在 Visual Studio 中禁用该项目。
将 CMake 作为 Visual Studio 的一部分进行安装足以在 `Developer Command Prompt` 中运行 msbuild,但如果您没有将其添加到全局 PATH,则无法在 VS 内部构建。在外部安装 CMake 允许您在安装期间将其添加到 PATH。
**注意**:在某些版本的 Visual Studio 中存在一个问题,可能在加载项目时出现。如果 Visual Studio 卡在“Running Background Tasks”并且不让您构建项目,您就会注意到这个问题。一种解决方法是在解决方案资源管理器中右键单击“NativeProxy”项目,然后选择“Unload Project”。之后项目就能正常加载和构建了。
从命令行构建时不会出现此问题。
### 如何启动 Reko?
解决方案文件夹 `Drivers` 包含充当用户界面的可执行文件。子目录 `WindowsDecompiler` 包含 Windows Forms 用户界面的 GUI 客户端。子目录 `AvaloniaShell` 包含跨平台 [Avalonia](https://avaloniaui.net/) 用户界面的 GUI 客户端(仍在构建中)。`CmdLine` 是一个命令行驱动程序。
## 近期版本
有关最新发布版本,请参阅[发布日志](https://github.com/uxmal/reko/releases)。
**Reko**(瑞典语:“得体、亲切”)是一个针对机器代码二进制文件的反编译器。
本项目基于 GNU General Public License 免费提供。
该项目由前端、核心反编译引擎和后端组成,以帮助实现其目标。在撰写本文时,已存在命令行、Windows GUI 和 ASP.NET 前端。反编译引擎以前端输入的形式接收数据,这些输入可以是单个可执行文件或反编译项目文件。Reko 项目文件包含有关二进制文件的附加信息,这些信息有助于反编译过程或格式化输出。随后,反编译引擎将继续分析输入的二进制文件。
![]() Byte map view of a loaded ARM binary executable |
![]() Decompiled view of a loaded ARM binary executable |
标签:ARM架构, ASP.NET, Bash脚本, DAST, DNS 反向解析, DNS 解析, GNU GPL, TLS抓取, Windows GUI, 二进制分析工具, 二进制反编译, 云安全监控, 云资产清单, 反编译器, 可执行文件分析, 开源, 恶意软件分析, 情报收集, 数据集, 机器码分析, 漏洞研究, 软件安全, 逆向工程, 静态分析

