PWN栈溢出

本文详细介绍了CPU中的各类寄存器作用,包括累加寄存器eax、基址寄存器ebx、计数寄存器ecx、数据寄存器edx、索引寄存器esi和edi,以及堆栈指针寄存器esp和ebp。同时,文章还解释了段地址寄存器ss、cs、ds、es、fs、gs的功能,以及标志位寄存器EFLAGS的各个标志位含义。此外,本文还探讨了内存分段的概念,包括栈段、堆、数据段、BSS段和代码段的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一般寄存器

  1. eax 被称为累加寄存器(Accumulator),用以进行算数运算和返回函数结果等。

  2. ebx 被称为基址寄存器(Base),在内存寻址时(比如数组运算)用以存放基地址。

  3. ecx 被称为记数寄存器(Counter),用以在循环过程中记数。

  4. edx 被称为数据寄存器(Data),常配合 eax 一起存放运算结果等数据。

索引寄存器常用于字符串操作

  1. esi 指向要处理的数据地址(Source Index)。

  2. edi 指向存放处理结果的数据地址(Destination Index)。

堆栈指针寄存器(esp、ebp)

  1. esp --> stack point

段地址寄存器(ss、cs、ds、es、fs、gs)

  1. ss 存储函数调用栈(Stack Segment)的地址

  2. cs 存储代码段(Code Segment)的地址

  3. ds 存储数据段(Data Segment)的地址

  4. es、fs、gs 是附加的存储数据段地址的寄存器

标志位寄存器(EFLAGS)

  1. OF(Overflow Flag)对应数值溢出

  2. IF(Interrupt Flag)对应中断

  3. ZF(Zero Flag)对应运算结果为0

  4. CF(Carry Flag)对应运算产生进位

内存分段

  1. 栈段(Stack Segment)

  2. 堆(Heap Segment)
    用于存放程序运行中动态分配的内存

  3. 数据段(Data Segment)
    存储已经初始化且初值不为0的全局变量和静态局部变量

  4. BSS段
    存储未初始化或初值为0的全局变量和静态局部变量

  5. 代码段(Code Segment)
    存储可执行代码和只读常量(如常量字符串),属性可读(r)可执行(x),但通常不可写(w)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值