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
是一個命令列驅動程式。
請參閱發布日誌以了解最新版本。