x86汇编与逆向工程:软件破解与防护的艺术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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)增加了、值更长了而已。