zoukankan      html  css  js  c++  java
  • 逆向工程核心原理-IA-32寄存器

    IA-32由四类寄存器组成:通用寄存器,段寄存器,程序状态与控制寄存器,指令指针寄存器。

    通用寄存器:用于传送和暂存数据,也可参与算数逻辑运算,并保存运算结果。

      EAX(0-31) 32位          AX  (0-15)  EAX的低16位         AH (8-15) AX的高8位             AL(0-7) AX的低8位

      EAX:针对操作数和结果数据的   累加器              EAX一般用在函数返回值中,所有win32API函数都会先把返回值保存到EAX再返回。

      EBX:DS段中的数据指针         基址寄存器

      ECX:字符串和循环操作的         计数器

      EDX:I/O指针                           数据寄存器

      EBP:SS段中栈内数据指针     扩展基址指针寄存器

      ESI:字符串操作源指针     源变址寄存器

      EDI:字符串操作目标指针      目的变址寄存器

      ESP:SS断中栈指针               栈指针寄存器                  ESP指向栈顶地址

    段寄存器:段寄存器总共有6种寄存器,分别为cs,ss,ds,es,fs,gs。

      CS:Code Segment    代码段寄存器     存放应用程序代码所在段的段基址

      SS:Stack Segment   栈段寄存器      存放栈段的段基址

      DS:Data Segment     数据段寄存器     存放数据段的段基址

      ES:Extra(Data)Segment      附加(数据)段寄存器    以下都是存放附加数据段的段基址

      FS:Data Segment      数据段寄存器

         GS:Data Segment    数据段寄存器

       FS寄存器用于计算SEH(Structured Exception Handler,结构化异常处理机制)、TEB(Thread Environment Block,线程环境块)、PEB(Process Environment Block,进程环境块)等地址,这些属于高级调试技术。

    程序状态与控制寄存器:

      EFLAGS:Flag Register, 标志寄存器            共有32位元,每位都有特定的含义。

      ZF:Zero Flag,零标志       若运算结果为0,则其值为1,否则为0.

      OF:Overflow Flag,溢出标志    有符号整数溢出时,OF值被置为1。此外,MSB(最高有效位)改变时,其值也被设为1。

      CF:Carry  Flag,进位标志     无符号整数溢出时,其值也被置为1。

    指令指针寄存器:

      EIP:Instruction Pointer,指令指针寄存器    保存着CPU要执行的指令地址,EIP只能间接修改,还可以通过中断或异常来修改EIP的值。

  • 相关阅读:
    Golang相关环境变量
    mac catalina关闭系统更新提示
    Git常用命令
    UDP打洞原理
    LANMP相关配置
    Windows平台编译libevent
    Sublime text2 + cygwin编译C++
    C++的指针常量和常量指针
    C++的new和delete
    C/C++产生随机数
  • 原文地址:https://www.cnblogs.com/whitehawk/p/10753704.html
Copyright © 2011-2022 走看看