官术网_书友最值得收藏!

前言

首先讓我回答一個最明顯的問題:為什么選擇“Blue Fox”(藍狐)這個名字?

本書最初打算涵蓋Arm指令集、逆向工程以及漏洞利用(exploit)緩解內部機制和繞過技術方面的內容。出版商和我很快意識到,要完全涵蓋這些主題,可能需要1000頁左右的篇幅。因此,我們決定將其拆分成兩本書:藍狐卷和紅狐卷。

藍狐卷從分析師的視角介紹開啟逆向工程所需的一切。如果沒有對基礎知識的扎實理解,就無法轉向更高級的主題,如漏洞分析和漏洞利用開發。紅狐卷從攻擊性安全視角介紹漏洞利用緩解內部機制、繞過技術和常見漏洞模式。

截至撰寫本文時,Armv8-A架構(和Armv9-A擴展)的Arm架構參考手冊[1]已有11 952頁,而且還在不斷擴展。兩年前我開始撰寫本書時,這個參考手冊大約有8000頁。

那些習慣了逆向分析x86/64二進制文件但想要適應由Arm驅動的設備的安全研究人員,很難在逆向工程或二進制分析的背景下找到易于理解的Arm指令集資源。Arm的架構參考手冊可能會讓人感到不知所措和沮喪。在當今這個時代,沒有人有時間閱讀一份12 000頁的技術文檔,更不用說識別最相關或最常用的指令并記住它們了。事實上,你不需要知道每一條Arm指令就能對Arm二進制文件進行逆向工程處理。許多指令都有非常具體的用例,這些用例你在分析過程中可能會遇到,也可能永遠不會遇到。

本書的目的是讓人們更輕松地熟悉Arm指令集并獲得足夠的知識。我花費了無數個小時來剖析Arm架構參考手冊,并將最常見的指令類型及其語法模式進行分類,這樣你就不必自己去剖析了。但是,本書并不是最常見Arm指令的列表。它包含了很多在其他任何地方(甚至包括Arm手冊本身)都找不到的解釋。Arm手冊對指令的基本描述相當簡短。對于像MOV或ADD這樣的簡單指令來說,這是可以接受的;然而,許多常見指令執行復雜的操作,其簡短描述很難讓人理解。因此,你在本書中遇到的許多指令都附有圖形說明,以解釋在底層實際發生的事情。

如果你是逆向工程的初學者,那么了解二進制文件的文件格式、它的各節、從源代碼編譯成機器碼的過程以及它所依賴的環境是非常重要的。由于篇幅有限,本書無法涵蓋每種文件格式和操作系統,因此將重點放在Linux環境和ELF文件格式上。好消息是,無論平臺或文件格式如何,Arm指令都不變。即使針對macOS或Windows環境下的Arm二進制文件進行逆向工程處理,指令本身的含義仍然是相同的。

第1章介紹指令的定義和來源。第2章介紹ELF文件格式及其各節,以及編譯過程。如果不了解二進制分析的執行環境,那么二進制分析是不完整的,因此第3章概述操作系統基礎知識。

有了這些背景知識,你便做好了深入探討第4章中的Arm架構的準備。第5章介紹最常見的數據處理指令,第6章概述內存訪問指令。這些指令是Arm架構——也被稱為Load/Store架構——的重要組成部分。第7章和第8章分別討論條件執行和控制流,這些是逆向工程的關鍵組成部分。

第9章是特別適合逆向工程師的章節。了解不同類型的Arm環境非常重要,特別是在執行動態分析并需要在執行期間分析二進制文件時。

有了目前提供的信息,你就已經為下一個逆向工程項目做好了充分準備。為了幫助你入門,第10章將概述最常見的靜態分析工具,并提供一些實際的靜態分析示例,你可以按步驟跟隨學習。

如果無法用動態分析方法觀察程序在執行期間的行為,逆向工程可能會變得枯燥無味。第11章將介紹最常見的動態分析工具,以及在分析過程中可以使用的有用的命令的示例。該章最后將給出兩個實際調試示例:調試內存損壞和使用GDB調試進程。

逆向工程在各種用例中都非常有用。你可以利用自己掌握的Arm指令集和逆向工程技術知識,將自己的技能擴展到不同領域,例如漏洞分析或惡意軟件分析。

逆向工程是惡意軟件分析師的寶貴技能,但他們還需要熟悉給定惡意軟件樣本的編譯環境。為了幫助你踏入這個領域,本書的第12章將分析arm64 macOS惡意軟件,該章由Patrick Wardle撰寫,他也是The Art of Mac Malware[2]的作者。與前面的章節不同,這一章并不討論Arm匯編語言,而是介紹macOS惡意軟件為了避免被分析而采用的反分析技術。這一章的目的是介紹適用于蘋果芯片(M1/M2)的macOS惡意軟件,以便任何對基于Arm的macOS惡意軟件感興趣的人快速入門。

我撰寫本書花了兩年多的時間。我于2020年3月開始寫作,當時疫情暴發,我們都被隔離在家中。經過兩年的艱辛努力,我很高興看到它終于問世了。謝謝大家對我的信任。我希望本書能夠成為你開始逆向工程之旅的有用指南,讓這個旅程更加順暢和不那么令人望而生畏。


[1]https://developer.arm.com/documentation/ddi0487/latest

[2]https://taomm.org

主站蜘蛛池模板: 永德县| 霍城县| 花垣县| 商都县| 万盛区| 绥化市| 南郑县| 宁晋县| 浦江县| 郓城县| 云安县| 高邑县| 军事| 汝州市| 焉耆| 论坛| 外汇| 阿克| 泗水县| 邵阳市| 新安县| 长兴县| 崇阳县| 阜南县| 磴口县| 临潭县| 西林县| 江永县| 昌乐县| 绥化市| 昌江| 安多县| 上犹县| 孟津县| 文安县| 丹巴县| 新竹市| 大竹县| 丽水市| 南江县| 霍林郭勒市|