逆向工程核心原理-4

逆向工程核心原理-第四章 IA-32寄存器基本讲解

了解寄存器

主要分为四类

  • 通用寄存器(32bit , 8个)
  • 段寄存器(16bit , 6个)
  • 程序状态与控制寄存器(32bit , 1个)
  • 指令指针寄存器(32bit , 1个)

Untitled

Untitled

高版本的寄存器实现兼容(16bit跟8bit)

  • EAX : (0~31) 32位
  • AX : (0~15) EAX 的低16位(为什么只有一个 ? 因为一个就够了)
  • AH : (8~15) AX的高8位
  • AL: (0~7) AX 低8位

通用寄存器的特殊功能

  • EAX:(针对操作数和结果数据的)累加器
  • EBX:(DS段中的数据指针)基址寄存器
  • ECX:(字符串和循环操作的)计数器
  • EDX:(1O指针)数据寄存器

但是,主要功能还是暂存数据和数据的运算

通用寄存器的其他寄存器(指针)

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

段寄存器

  • CS:Code Segment,代码段寄存器
  • SS: Stack Segment,栈段寄存器
  • DS:Data Segment,数据段寄存器
  • ES: Extra ( Data ) Segment,附加(数据)段寄存器
  • FS: Data Segment,数据段寄存器
  • GS:Data Segment,数据段寄存器

目前只需要知道CS , SS , DS 就行了

程序状态与控制寄存器

EFLAGS: Flag Register, 标志寄存器

EFLAGS的每一位都具有意义(或者说是个众多开关的集合,这些开关只有Ture跟False两个状态)

现在仅需要知道的Flag

  • ZF (Zero Flag,零标志)
  • OF ( Overflow Flag,溢出标志)
  • CF ( Carry Flag,进位标志)。

对于跳转而言,非常重要

Untitled

指令指针寄存器(EIP)

EIP的值不能直接修改,但是可以通过汇编指令(JMP , JCC , CALL , RET)来进行改变

文章作者: LamのCrow
文章链接: http://example.com/2021/12/18/ReMain-第四章 IA-32寄存器基本讲解 0f4565fc9d214be78d93a8ccb0ab5fb6/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LamのCrow