博主头像
Q的小站

思想无界,文字有声

头图

逆向入门-寄存器

引言

  • 寄存器是位于CPU内部的高速存储单元,作为计算机存储层次结构中最顶层的存储形式,寄存器提供了最快的访问速度,是CPU执行指令和处理数据的核心工作区域。在逆向和pwn中记住这些寄存器是最基础的。

寄存器的类型

1. 通用寄存器

用于存储临时数据和中间计算结果,如x86架构中的EAX、EBX、ECX、EDX等。

x86-64 核心通用寄存器列表

64 位32 位16 位8 位(低)用途
RAXEAXAXAL累加器
RBXEBXBXBL基址寄存器
RCXECXCXCL计数器(循环/移位)
RDXEDXDXDL数据寄存器
RSIESISISIL源索引(字符串操作)
RDIEDIDIDIL目标索引(字符串操作)
RBPEBPBPBPL栈帧基址指针
RSPESPSPSPL栈指针
R8-R15R8D-R15DR8W-R15WR8B-R15B扩展寄存器

通用寄存器的用途

通用寄存器有厂商建议的用途,但事实上你可以随意的使用它们(如果你喜欢手搓汇编程序的话😊),一般使用编译器生成的程序都会遵守建议的用途

2. 专用寄存器

  • 程序计数器(PC):存储下一条要执行指令的地址
  • 指令寄存器(IR):存储当前正在执行的指令
  • 堆栈指针(SP):指向当前堆栈顶部的地址
  • 基址指针(BP):用于访问函数参数和局部变量
  • 标志寄存器(FLAGS):存储CPU状态信息(如零标志、进位标志等)

3. 浮点寄存器

专门用于浮点运算,如x87 FPU寄存器栈。

4. 向量寄存器

支持SIMD(单指令多数据)操作,如SSE和AVX寄存器。


总结

  • 在逆向和pwn中记住这些寄存器是最基础的
  • 标志寄存器FLAGS很难记但是很重要
  • 下一节介绍汇编基础
发表新评论