逆向工程核心原理 第四章

0x00 前言

IA-32寄存器基本讲解。

0x01 正文

1.什么是CPU寄存器

寄存器是CPU内部用来存放数据的一些小型存储区域。

1.1 通用寄存器

通用寄存器是一种通用性的寄存器,IA-32中每个通用寄存器的大小都是32位,也就是4个字节。

作用

  • 传送和暂存数据
  • 参与算术逻辑运算
  • 保存运算结果

寄存器说明

逆向工程核心原理 第四章_第1张图片
EAX:累加器(针对操作数和结果数据的)
EBX:基址寄存器(DS段中的数据指针)
ECX:计数器(字符串和循环操作)
EDX:数据寄存器(I/O指针)

在循环命令中,ECX用来循环计数,没执行一次循环,ECX都要减1。所有的WIN32 API函数都会先把返回值保存到EAX再返回。

EBP:扩展基址指针寄存器(SS段中栈内数据指针)
ESI:源变址寄存器(字符串操作源指针)
EDI:目的变址寄存器(字符串操作目标指针)
ESP:栈指针寄存器(SS段中栈指针)

以上4个寄存器主要用作保存内存地址的指针。

ESP指示栈区域的栈顶地址
EBP表示栈区域的基地址

1.2 段寄存器

段是一种内存保护技术,它把内存划分为多个区段,并为每个区段赋予起始地址、范围、访问权限等,保护内存。

CS:代码段寄存器 (用与存放应用程序代码所在段的段基址)
SS:栈段寄存器(存放栈段的段基址)
DS:数据段寄存器(存放数据段的段基址)
ES:附加数据段寄存器
FS:数据段寄存器
GS:数据段寄存器

1.3 程序状态与控制寄存器

EFLAGS:标志寄存器,代销为4个字节(32位)
EFLAGS寄存器有32个位元。现阶段知道

  • ZF(零标志 1为true,0为false)
  • OF(溢出标志 有溢出的时候,OF值被置为1,MSB最高有效位改变时,其值也被设为1)
  • CF (进位标志 溢出时,其值为1)

1.4 指令寄存器

EIP:指令指针寄存器
程序运行时,CPU会读取EIP中一条指令的地址,传送指令到指令缓冲区后,EIP寄存器的值自动增加,增加的大小即是读取指令的字节大小,CPU每次执行完一条指令,就会通过EIP寄存器读取并执行下一条指令。

你可能感兴趣的:(逆向工程核心原理 第四章)