2022年最佳的9种逆向工程工具[持续更新]
逆向是復(fù)雜的。然而,軟件開發(fā)人員經(jīng)常在面臨一項具有挑戰(zhàn)性的任務(wù)時轉(zhuǎn)向反向工程:增強(qiáng)軟件安全性、使軟件與第三方組件兼容、維護(hù)遺留代碼,等等。
在本文中,我們將描述我們的軟件逆向程序在工作中所依賴的主要工具,并展示如何使用這些工具的實際示例。本文對于熟悉匯編語言和網(wǎng)絡(luò)交互原則的讀者以及具有使用API函數(shù)進(jìn)行Windows編程的經(jīng)驗的讀者非常有用。
1. IDA Pro,Hex Rays
IDA Pro是最好和最受歡迎的逆向工程軟件工具之一。它是一種交互式反匯編程序,具有內(nèi)置命令語言 (?IDC?),并支持多種處理器和操作系統(tǒng)的多種可執(zhí)行格式。IDA Pro 還有大量的插件可以進(jìn)一步擴(kuò)展反匯編器的功能。
IDA Pro 的主要優(yōu)點是它允許您以交互方式更改顯示數(shù)據(jù)的任何元素:
- 給函數(shù)、變量、數(shù)據(jù)結(jié)構(gòu)等命名。
- 更改數(shù)據(jù)表示(如數(shù)字、各種編碼的字符串、數(shù)據(jù)結(jié)構(gòu))
- 搭建圖表和代碼流程圖,簡化對反匯編代碼的理解
- 使用 C++ 中有關(guān)函數(shù)參數(shù)和結(jié)構(gòu)定義的類型信息,以便自動命名參數(shù)和變量
- 自動識別和命名匯編代碼中的標(biāo)準(zhǔn)庫函數(shù)
- 以及更多
截圖 1.IDA Pro 界面
除了反匯編器本身,讓我們也仔細(xì)看看一些 IDA 插件。
- Hex-Rays 反編譯器
- 這個插件可以將原生處理器代碼變成更易讀的、類似 C 的版本。Hex-Rays Decompiler 生成的 C 代碼相當(dāng)準(zhǔn)確,可與人類逆向工程師生成的代碼相媲美。無論架構(gòu)如何,它都能正確反編譯由各種 C++ 編譯器生成的代碼。但是,Hex-Rays Decompiler 在處理復(fù)雜的匯編代碼時可能會出現(xiàn)問題,其中原始代碼是通過添加內(nèi)聯(lián)匯編或進(jìn)行一些手動優(yōu)化來專門修改的。?
- Lighthouse
- 該插件使您能夠標(biāo)記反匯編程序中的執(zhí)行路徑。因此,您可以了解哪些代碼段參與了執(zhí)行,以及它們是否涉及某些算法或功能。
- 基本上,這個插件將代碼覆蓋工具的報告加載到 IDA 數(shù)據(jù)庫中,并根據(jù)代碼的執(zhí)行次數(shù)標(biāo)記代碼片段。這使得在瀏覽反匯編時可以清楚地看到代碼的哪一部分值得您注意。
- ClassInformer
- 此插件旨在用于 Visual Studio 構(gòu)建的二進(jìn)制文件,并搜索存儲在可執(zhí)行文件數(shù)據(jù)部分中的 RTTI 信息。RTTI 信息允許插件查找 C++ 類的類名和虛擬方法,并為用戶命名。此外,ClassInformer 可以為您提供找到的類的列表。
- BinDiff 由 zynamix
- 該工具使用 IDA 引擎將二進(jìn)制文件作為匯編代碼而不是字節(jié)流進(jìn)行比較。BinDiff 可以將同一程序的兩個版本的代碼差異確定為添加、刪除或替換的指令列表。更改也可以表示為代碼流圖。
- IDA-功能標(biāo)注器
- 該插件分析導(dǎo)入的函數(shù)和調(diào)用它們的函數(shù),然后按標(biāo)簽對它們進(jìn)行分組:密碼學(xué)相關(guān)、注冊表相關(guān)、網(wǎng)絡(luò)相關(guān)等。這樣的分組可以更容易地找到負(fù)責(zé)特定操作的代碼部分。
- ida-x86emu
- 該插件模擬反匯編代碼的執(zhí)行,而無需在調(diào)試器中運(yùn)行正在分析的應(yīng)用程序。使用此插件,您可以模擬執(zhí)行任何代碼的結(jié)果,而無需修改系統(tǒng)中的某些內(nèi)容。您需要做的就是指定 CPU 寄存器的起始值。然后,您可以逐步執(zhí)行。
2. CFF Explorer
CFF Explorer是一套用于可移植可執(zhí)行 (PE) 編輯的工具,其中包括:
- PE 和 HEX 編輯器
- 資源編輯器
- 導(dǎo)入編輯器
- 簽名掃描儀
- 地址轉(zhuǎn)換器
- 反匯編器
- 依賴分析器
- 和更多
截圖 2. CFF Explorer 界面
3. API Monitor
API Monitor是一個用于攔截應(yīng)用程序和服務(wù)進(jìn)行的 API 函數(shù)調(diào)用的應(yīng)用程序。該工具還可以顯示輸入和輸出數(shù)據(jù)。?
默認(rèn)情況下,API Monitor 包含超過 13,000 個 API 函數(shù)和 1,300 多個 COM 接口方法的定義。
截圖 3. API Monitor 的 API Capture Filter 接口
4.WinHex
WinHex是一個十六進(jìn)制編輯器,它為 Windows 提供了一組豐富的功能和開發(fā)工具。?
WinHex 可以顯示軟件文件的校驗和或代碼,這是普通文本編輯器無法做到的。
截圖 4. WinHex 界面
5. Hiew
Hiew是一個專注于處理代碼的二進(jìn)制文件編輯器。它具有用于 x86、x86-64 和 ARM 的內(nèi)置反匯編器以及用于 x86 和 x86-64 的匯編器。
Hiew 的主要特點包括:
- 查看和編輯邏輯和物理驅(qū)動器
- 按模板搜索匯編命令
- 鍵盤宏
- 內(nèi)置64位計算器
- 創(chuàng)建自定義插件的工具
截圖 5. Hiew 界面
6.Fiddler
Fiddler 是一個代理,您可以使用它來攔截在應(yīng)用程序和服務(wù)器之間傳輸?shù)?HTTP/HTTPS 流量,對其進(jìn)行監(jiān)控和分析。Fiddler 可以在系統(tǒng)范圍內(nèi)攔截 HTTP/HTTPS 流量。您還可以添加插件(例如 wbxml 視圖,它可以解碼 wbxml)并在不同的視圖中顯示請求/響應(yīng)。
截圖 6. Fiddler 界面
Fiddler 有一個內(nèi)置的十六進(jìn)制編輯器,可以根據(jù)選定的請求生成請求或創(chuàng)建自定義請求。此外,Request to Code 插件允許您準(zhǔn)備好在 C#、Visual Basic 或 Python 中執(zhí)行請求的代碼。
7.錫拉
是一個用于轉(zhuǎn)儲正在運(yùn)行的應(yīng)用程序進(jìn)程并恢復(fù) PE 導(dǎo)入表的應(yīng)用程序。在它的幫助下,您可以獲得完全恢復(fù)的可以由操作系統(tǒng)運(yùn)行的 PE 文件。
截圖 7. Scylla 界面。圖片來源:堆棧交換
8.重定位部分編輯器
Relocation Section Editor是用于編輯 PE 文件中的重定位表的應(yīng)用程序。此工具的主要目的是在修補(bǔ)可重定位代碼的情況下修改重定位表。但它通常用于在恢復(fù)受保護(hù)文件時完全刪除重定位表。
受保護(hù)的文件實際上只包含解包器代碼的重定位表。實際代碼的重定位表通常隱藏在解包器數(shù)據(jù)中。因此,如果正在恢復(fù)轉(zhuǎn)儲,有兩種方法可以為真實代碼恢復(fù)丟失的重定位表:?
截圖 8. Relocation Section Editor 界面
9. PEID
PEiD 是檢測封隔器的最佳逆向工程工具之一。通過分析熵,PEiD 可以檢測應(yīng)用程序是否被打包。
還有各種有用的插件可以幫助分析 PE 文件。例如,KANAL(PEiD 的 Krypto Analyzer)插件分析 PE 文件中是否存在已知的加密算法。
截圖 9. PEiD 接口
這些是 Apriorit 的逆向工程師在處理 Windows 逆向項目時經(jīng)常使用的九種工具。如您所見,這些逆向工程軟件中的每一個都解決了一組非常獨(dú)特的特定任務(wù)。在下一節(jié)中,我們將提供實際示例,展示這些工具中的每一個在 Windows 逆向中的作用和重要性。
總結(jié)
以上是生活随笔為你收集整理的2022年最佳的9种逆向工程工具[持续更新]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查找算法的总结
- 下一篇: s5pv210——I2C的代码实践