Reko (瑞典语:“体面、有义务”)是机器代码二进制文件的反编译器。该项目可根据 GNU 通用公共许可证免费使用。
该项目由前端、核心反编译引擎和后端组成,以帮助其实现其目标。 在撰写本文时,已存在命令行、Windows GUI 和 ASP.NET 前端。 反编译器引擎以单独的可执行文件或反编译器项目文件的形式接收来自前端的输入。 Reko 项目文件包含有关二进制文件的附加信息,有助于反编译过程或格式化输出。然后反编译器引擎继续分析输入的二进制文件。
已加载的 ARM 二进制可执行文件的字节图视图 | 加载的 ARM 二进制可执行文件的反编译视图 |
Reko 的目标是在最少的用户干预下支持各种处理器架构和可执行文件格式的反编译。有关完整列表,请参阅支持的二进制文件页面。
请注意,许多软件许可证禁止对其机器代码二进制文件进行反编译或其他逆向工程。仅当您拥有反编译二进制文件的合法权利时才使用此反编译器(例如,如果该二进制文件是您自己的。)
正式版本每隔几个月就会在 Github 和 SourceForge 上发布一次。无法或不会自行构建 Reko 的用户可以下载 Cirrus CI 集成构建器或 Github Actions 集成构建器的输出。当然,您可以从源代码构建项目:请参阅下面的“黑客”。
您的计算机上必须首先安装以下必备软件:
.NET 6.0 (https://www.microsoft.com/net/download/dotnet-framework-runtime)
下载适当的安装程序并在目标计算机上运行它。
安装后,您可以直接从集成构建服务器下载二进制文件,或者从源代码构建 Reko(请参阅下面的Hacking
)。
要熟悉 Reko 的各种功能,您可以阅读用户指南。如果您对该项目的内部运作感兴趣,请参阅 wiki。
您可以在问题跟踪器上报告遇到的任何问题或提出任何与 Reko 相关的问题。您还可以尝试 Reko Gitter.im 聊天室。 Reko 是志愿者利用业余时间努力建立的,因此请相应地调整您的响应时间预期。
要构建 reko,请首先克隆 https://github.com/uxmal/reko。您可以使用 IDE 或命令行来构建解决方案文件Reko-decompiler.sln
。 Reko 需要 .NET 6.0 SDK 才能编译。如果您是 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
。
注意:如果您仍然无法编译,请告诉我们,以便我们帮助您解决问题。
如果您有兴趣贡献代码,请参阅路线图以了解要探索的领域。 Wiki 有关于 Reko 项目内部运作的更多信息。请查阅风格指南。
如果您尚未在开发计算机上安装 WiX 工具集,则在 Visual Studio 中加载解决方案时,您将收到警告或错误。您可以安全地忽略这些警告; WiX 工具集仅在制作 MSI 安装程序包时使用。如果您已经能够编译项目,则无需构建安装程序:构建过程会将所有必需的文件复制到单个目录中。如果您确实想使用 WiX 工具链构建 MSI 安装程序,可以在此处下载:http://wixtoolset.org/releases/
根据您的操作,Visual Studio 可能会尝试重建依赖于 CMake 的 NativeProxy。您可以安装 CMake 并确保将其添加到您的 PATH 中,也可以在 Visual Studio 中禁用该项目。
将 CMake 作为 Visual Studio 的一部分安装足以从Developer Command Prompt
运行 msbuild,但在 VS 内部构建时则不然,除非您已将其添加到全局 PATH 中。外部安装 CMake 允许您在安装过程中将其添加到 PATH。
注意:某些版本的 Visual Studio 中存在一个问题,该问题在加载项目时可能会显现出来。如果 Visual Studio 卡在“运行后台任务”并且不允许您构建项目,您会注意到这一点。解决方法是右键单击解决方案资源管理器中的“NativeProxy”项目,然后选择“卸载项目”。然后该项目将能够正确加载和构建。从命令行构建时不会出现此问题。
解决方案文件夹Drivers
包含充当用户界面的可执行文件。子目录WindowsDecompiler
包含 Windows 窗体用户界面的 GUI 客户端。子目录AvaloniaShell
包含跨平台 Avalonia 用户界面的 GUI 客户端(仍在建设中)。 CmdLine
是一个命令行驱动程序。
请参阅发布日志以了解最新版本。