第四章
x86反汇编学习
一。计算机系统被描述为以下六个抽象层次。
1.硬件。 硬件层是唯一的一个物理层,由电子电路组成。这些电路实现了xor,and,or,not门等逻辑运算器的
复杂组合,成为数字逻辑。由于物理特性,硬件很难被软件所操纵。
2.微指令。 微指令又成为固件。微指令只能在为它设计的特定电路上执行。这层由一些微指令构成,它们
从更高的机器码层翻译过来,提供了访问硬件的接口。当分析恶意代码时,我们通常不关心微指令,因为
它们通常是为特定的计算机硬件设计的。
3.机器码。 机器码层由操作码组成,操作码是一些十六进制形式的数字,用于告诉处理器你想要它做什么。
机器码一般由多条微指令实现,这样底层硬件就能实际执行代码了。而机器码本身又由高级语言编写的计
算机程序编译而来。‘
4.低级语言。 低级语言是计算机体系结构指令集的人类易读版本,主要是汇编语言。恶意代码分析师使用
这一层,因为对人来说,机器码不易理解。我们使用过反汇编器来生成低级语言的文本,这些文本由一些
简单的助记符组成,如mov和jmp。汇编语言存在一些不同的语法,我们会逐一介绍。
5.高级语言。 大部分程序员使用高级语言。高级语言对机器层做了很强的抽象,从而可以很轻松地使用程
序逻辑和流程控制机制。高级语言包括c,c++等。它们被一个编译器经过成为编译的过程转化为机器码。
6.解释型语言。 解释型语言位于最高层。 很多程序员使用诸如c#,perl,.net.java等解释语言。这一层的代码
不会被编译为机器码,而是被翻译为了字节码。字节码是特定于该语言的一种中间表示,它在解释器中执
行。解释器是一个运行时将字节码实时翻译为可执行机器码的程序,它在解释器中执行。
二.逆向工程
恶意代码存储在磁盘上,通常是机器码层