堆栈指令

堆栈是操作系统为程序分配的一块内存,用于临时存储数据,防止堆栈溢出。ESP寄存器指示堆栈使用情况。PUSH指令将数据压入堆栈并更新ESP,而POP指令取出堆栈顶部数据并恢复ESP。在程序执行过程中,如破解或调试,堆栈发挥了关键作用。
摘要由CSDN通过智能技术生成

什么是堆栈

  1. 就是一块内存,操作系统在启动程序的时候已经分配好的,供程序执行时使用,也就是村饭程序执行时形成一些临时数据,一些中间值。
  2. 和数据结构的堆栈无关。
  3. 查看堆栈

当内存用完了,程序就会出错,称为堆栈溢出。
内存用的是从大地址到小地址,在堆栈区是从下往上用。

栈指针寄存器(ESP)

寄存器ESP就是用来看内存用到什么地方的,右击->在栈中转到,就可以在堆栈区看到。

堆栈的使用

就比如说:破解一个程序,有一个加密函数和解密函数,当一个程序执行完了,是看不出密码,而明文之类的中间过程在堆栈中临时出现

  1. 存储数据
    就是通过查看堆栈已用到什么位置,然后使用已用地址的上面地址编码,在反汇编的窗口在已执行停止的位置开始进行对内存的字节定义宽度并且存储数值。
  2. 修改栈顶指针
    既然使用了堆栈内存,就要对寄存器的ESP进行修改,用来多少字节就减几个字节,指令:sub esp,字节数
  3. 恢复栈顶
    如果栈点用过后不用了,得把堆栈区的栈顶修改回去,在反汇编窗口程序停留位置,指令:add esp,字节数,字节数用十六进制(32位的就是4,16位的就是2字节)

PUSH指令:

功能:

  1. 向堆栈中压入数据
  2. 修改栈顶指针ESP寄存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值