- x86匯編與逆向工程:軟件破解與防護的藝術
- (美)斯蒂芬妮·多馬斯 (美)克里斯托弗·多馬斯
- 877字
- 2025-02-10 16:05:41
2.1 x86簡介
目前有上萬種不同的計算機架構。盡管它們的工作方式都很相似,但每一種計算機架構之間或多或少都有差異。
為了研究逆向工程,我們需要選擇一個焦點架構。在本書中,我們將使用x86架構,選擇這一架構的理由有以下幾個:
? 普遍性:x86是使用最廣泛的匯編語言,因此在逆向工程中具有廣泛的應用。
? 計算機支持:任何臺式計算機、筆記本計算機或服務器都可以構建、運行x86應用程序并對其進行逆向工程。
? 市場份額:x86是主流操作系統(Windows、Linux和macOS)的核心,因此已在數十億的系統中被使用。
x86架構已經存在了幾十年,并且這些年來有了很大發展。這種架構最初是在1974年由英特爾(Intel)推出的,x86歷史上的一些主要里程碑包括:
? Intel 8080:于1974年推出的8位微處理器。
? Intel 8086:于1978年推出的16位微處理器。
? Intel 80386:于1985年推出的32位微處理器。
? Intel Prescott、AMD Opteron和Athlon 64:于2003年/2004年推出的64位微處理器。
在近50年的歷史中,x86架構不斷加入新的特性,同時仍保持向后兼容。即使有些特性被認為無人使用,也從未被從系統中移除。因此,針對1978年發布的Intel 8086處理器編寫的程序,現在依然可以在最新的x86芯片上運行,無須修改。
這種專注于向后兼容的方式創造了一個龐大、復雜且有趣的架構。最新的Intel軟件開發者手冊(https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm. html)已超過5000頁,但也只是初步揭示了這個架構的能力。本書專注于理解x86的基礎知識,這是讀取、編寫和操作大多數x86代碼所需的全部內容。
隨著x86架構的變化,x86已經成為所有從Intel 8086 16位架構演變出來的架構的總稱,它包括Intel 80286架構(包含16位和32位架構),以及Intel 80886架構(增加了64位架構)。x64特指x86的64位版本。
本書將展示一些在32位x86架構上的示例。32位x86的所有概念都可以無縫轉化到x64中。在學習階段,使用32位的示例比64位的要容易得多。通過全面研究本書中的32位x86,你將能夠立即看懂x64匯編并理解它。你不需要一直盯著看64位的東西,因為即使是32位盯著看也有點痛苦。因此,不要因為示例是32位的就擔心這個是過時的,或者認為從一開始就應專注于64位。我們兩人都首先學習了32位,并且我們已經教過很多軟件破解課程,可以自信地說,如果你先打好32位的基礎,64位就只是寄存器(register)增加了、值更長了而已。