RetDec基于 LLVM 的機(jī)器碼反編譯器
安全軟件公司 Avast 宣布了研發(fā) 7 年的機(jī)器碼反編譯器 RetDec 的開源版本。
RetDec 是可重定向的機(jī)器碼反編譯器,同時(shí)有在線反編譯服務(wù)和 API ROPMEMU - 分析、解析、反編譯復(fù)雜的代碼重用攻擊的框架,能對常見和傳統(tǒng)的硬件架構(gòu)的機(jī)器碼進(jìn)行反編譯,支持 ARM, PIC32, PowerPC 以及 MIPS 架構(gòu)的機(jī)器碼。
RetDec 現(xiàn)在也開始提供網(wǎng)頁服務(wù)。在 IoT 物聯(lián)網(wǎng)設(shè)備越來越普及的今日,機(jī)器碼反編譯工作對于防范和發(fā)現(xiàn)安全威脅和惡意軟件來說至關(guān)重要,盡管完全還原機(jī)器碼的原始匯編指令是不可能的,但反匯編工作能夠讓生產(chǎn)可執(zhí)行的等效代碼,查看軟件是否有惡意攻擊意圖代碼。
反編譯器不限于任何特定的目標(biāo)架構(gòu),操作系統(tǒng)或可執(zhí)行文件格式:
支持的文件格式:ELF,PE,Mach-O,COFF,AR(存檔),Intel HEX和原始機(jī)器碼。
支持的體系結(jié)構(gòu)(僅限 32b):Intel x86,ARM,MIPS,PIC32 和 PowerPC。
特征:
具有詳細(xì)信息的可執(zhí)行文件的靜態(tài)分析。
編譯器和打包器檢測。
加載和指令解碼。
基于簽名的靜態(tài)鏈接庫代碼的刪除。
調(diào)試信息的提取和利用(DWARF,PDB)。
指導(dǎo)習(xí)語的重構(gòu)。
C ++類層次結(jié)構(gòu)(RTTI,vtables)的檢測和重構(gòu)。
從C ++二進(jìn)制文件中去除符號(hào)(GCC,MSVC,Borland)。
重構(gòu)函數(shù),類型和高級(jí)構(gòu)造。
集成的反匯編。
以兩種高級(jí)語言輸出:C和Python類語言。
生成調(diào)用圖,控制流圖和各種統(tǒng)計(jì)信息。
安裝和使用
目前只支持Windows和Linux。
Windows
從下面的列表中下載并解壓縮一個(gè)預(yù)先構(gòu)建的包,或者自己構(gòu)建并安裝反編譯器(過程如下所述):
32b Windows(v3.0)
64b Windows(v3.0)
為Visual Studio 2015安裝Microsoft Visual C ++可再發(fā)行組件。
按照RetDec的Windows環(huán)境設(shè)置指南安裝MSYS2和其他所需的應(yīng)用程序。
現(xiàn)在,你已經(jīng)開始運(yùn)行反編譯器了。要反編譯一個(gè)名為的二進(jìn)制文件test.exe,請進(jìn)入$RETDEC_INSTALLED_DIR/bin并運(yùn)行:
bash decompile.sh test.exe
有關(guān)更多信息,請運(yùn)行
bash decompile.sh --help
Linux
目前還沒有針對Linux的預(yù)建包。你將不得不自己建立和安裝反編譯器。該過程如下所述。
構(gòu)建反編譯器之后,您將需要通過發(fā)行版的包管理器安裝以下包:
3.現(xiàn)在,你已經(jīng)開始運(yùn)行反編譯器了。要反編譯一個(gè)名為的二進(jìn)制文件test.exe,請進(jìn)入$RETDEC_INSTALLED_DIR/bin并運(yùn)行:
./decompile.sh test.exe
有關(guān)更多信息,請運(yùn)行
./decompile.sh --help
