今天給大家介紹的是一款名叫Reko的開源反編譯工具,該工具采用C#開發,廣大研究人員可利用Reko來對機器碼進行反編譯處理。我們知道.NET 7 有了NativeAOT 的支持,采用NativeAOT 編譯的.NET程序 無法通過ILSpy 之類的傳統工具得到源碼,這款Reko 可能是唯一一款可以把NativeAOT 編譯的程序真正得到源碼的,當然你得首先會編程才行。編譯本質上是一個有損過程。將高級源代碼程序轉換為低級機器代碼可執行二進制文件時,諸如復雜數據類型和注釋之類的信息會丟失。有用的反編譯通常需要用戶的幫助。用戶可以提供被編譯器丟棄的類型信息,并為過程添加注釋或給出友好名稱。
Reko不僅包含核心反編譯引擎和后端代碼分析模塊,而且還提供了用戶友好的操作界面。目前,該工具提供了Windows GUI和ASP.NET后端。反編譯引擎需要從前端獲取用戶的輸入,可接受的輸入為單獨的可執行文件或反編譯項目文件。Reko項目文件中還包含了代碼文件的額外信息,來為研究人員的反編譯操作或格式化輸出提供幫助。在整個過程中,負責分析輸入代碼的主要是反編譯引擎。
Reko的目標就是幫助用戶在最小化操作交互的情況下,幫助用戶完成對多種處理器架構和可執行文件格式的反編譯處理。需要注意的是,很多軟件許可證會禁止他人對該軟件的機器碼進行反編譯或逆向分析,所以希望大家不要將本工具用于惡意目的。
項目地址:https://github.com/uxmal/reko
工具下載和安裝:https://github.com/uxmal/reko/releases/tag/version-0.11.1
.NET 6 是跨平臺的,可以在你需要安裝的操作系統上安裝 .NET 6.0:https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0?,如果需要開發Reko,并使用VS 2022,則必須安裝VS的C#組件,如果在Mac,Linux平臺上推薦使用Rider 。
在windows 下載好MSI文件之后,直接運行安裝程序即可。安裝完成后會在開始菜單里創建一個“Reko Decompiler”快捷方式,你可以直接點擊圖標啟動Reko客戶端。
打開GUI客戶端后,你可以參考GUI.md文檔開始工作。
Reko開始于一個空項目。二進制文件的分析從將它添加到項目中(使用菜單欄命令File > Open) 開始。Reko會嘗試確定這個文件是什么二進制文件格式。常見的格式,比如MS-DOS或EXE會被自動加載;它們的內部結構會被從頭到尾地分析加載(will be traversed),加載結果會在左側的項目概覽中中展現出來。
想了解Reko的各種特性,你可以讀 user’s guide.md | github。如果你對項目的內部工作原理感興趣,請看 reko wiki。