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

3.2 x86指令

x86汇编语言包括数百种指令。其中最常用的包括以下几种:

• 算术指令:

■ add。

■ sub。

■ mul。

■ inc。

■ dec。

• 位操作指令:

■ and。

■ or。

■ xor。

■ not。

• 栈指令:

■ call。

■ return。

■ push。

■ pop。

• 数据移动指令:

■ mov。

• 执行流程指令:

■ jmp。

■ 条件跳跃指令。

• 比较指令:

■ test。

■ cmp。

• 其他指令:

■ lea。

■ nop。

虽然这看起来很多,但请考虑一下编程语言中常用的操作符(+、-、*、/、%、&&、||、&、|、^、!、~、<、>、<=、>=、==、.、->等)和主要关键词(if、else、switch、while、do、case、break、continue、for等)。用汇编语言实现这些行为需要很强的能力。

说实话,没有人能记住所有的x86指令,也没有必要这样做。x86指令的完整列表可以在http://ref.x86asm.net/coder32.html上找到,若有需要,可以在这里查阅任何指令的详细信息。

然而,要想成为一名成功的逆向工程师,理解最常用的x86指令的工作原理是非常必要的。如果你熟悉这部分关键的x86指令,你就能阅读并理解大多数x86程序。