- ARM匯編與逆向工程:藍(lán)狐卷·基礎(chǔ)知識
- (美)瑪麗亞·馬克斯特德
- 658字
- 2024-05-14 11:09:05
1.3 反匯編
反匯編二進(jìn)制文件的過程包括將二進(jìn)制文件運(yùn)行的匯編指令從其機(jī)器碼格式重構(gòu)為人類可讀的匯編語言。反匯編最常見的用例包括惡意軟件分析、編譯器的性能和輸出準(zhǔn)確性驗(yàn)證、漏洞分析,以及針對閉源軟件缺陷進(jìn)行漏洞利用或概念驗(yàn)證開發(fā)。
在這些應(yīng)用中,漏洞利用開發(fā)可能是最需要對實(shí)際匯編代碼進(jìn)行分析的。雖然漏洞發(fā)現(xiàn)通常可以通過模糊處理等技術(shù)來完成,但從檢測到的崩潰代碼構(gòu)建漏洞利用或發(fā)現(xiàn)為什么某些代碼區(qū)域無法被模糊測試覆蓋,通常需要扎實(shí)的匯編知識。
在這種情況下,通過閱讀匯編代碼對漏洞的確切條件實(shí)現(xiàn)精細(xì)的掌握是至關(guān)重要的。編譯器分配變量和數(shù)據(jù)結(jié)構(gòu)的確切方式對于開發(fā)漏洞利用至關(guān)重要,因此深入了解匯編知識是必需的。通常一個看似“無法利用”的漏洞,實(shí)際上,只要再投入一點(diǎn)創(chuàng)造力和辛勤工作來真正理解易受攻擊的功能的內(nèi)部機(jī)制,便可變得可利用。
反匯編可執(zhí)行文件可以通過多種方式進(jìn)行,我們將在本書的第二部分更詳細(xì)地研究這個問題。但是,目前快速查看可執(zhí)行文件的反匯編輸出的最簡單的工具之一是Linux工具objdump[3]。
讓我們編譯并反匯編以下write()程序:

我們可以用GCC編譯這段代碼并指定-c選項(xiàng)。這個選項(xiàng)告訴GCC在不調(diào)用鏈接進(jìn)程的情況下創(chuàng)建目標(biāo)文件,因此我們可以只對編譯的代碼運(yùn)行objdump,而不看周圍所有目標(biāo)文件(如C運(yùn)行時)的反匯編。main函數(shù)的反匯編輸出如下:


雖然像objdump這樣的Linux實(shí)用工具對快速反匯編小程序很有用,但較大的程序需要更方便的解決方案。如今存在各種反匯編器可以使逆向工程更高效,包括免費(fèi)的開源工具(如Ghidra[4])和昂貴的解決方案(如IDA Pro[5])等。這些將在本書的第二部分中進(jìn)行詳細(xì)討論。
- 黑客攻防入門秘笈
- Learning Devise for Rails
- 信息安全案例教程:技術(shù)與應(yīng)用(第2版)
- Advanced Penetration Testing for Highly:Secured Environments(Second Edition)
- 信息安全導(dǎo)論(第2版)
- 網(wǎng)絡(luò)安全大數(shù)據(jù)分析與實(shí)戰(zhàn)
- CTF特訓(xùn)營:技術(shù)詳解、解題方法與競賽技巧
- 數(shù)據(jù)安全架構(gòu)設(shè)計與實(shí)戰(zhàn)
- 網(wǎng)絡(luò)安全實(shí)戰(zhàn)詳解(企業(yè)專供版)
- 信息內(nèi)容安全管理及應(yīng)用
- 數(shù)字銀行安全體系構(gòu)建
- Web代碼安全漏洞深度剖析
- Practical Internet of Things Security
- 社會工程:防范釣魚欺詐(卷3)
- 黑客攻防入門