16.x86游戏实战-汇编指令push pop pushad popad

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:15.x86游戏实战-汇编指令jmp call ret

现在引入一个堆栈的概念,首先每个程序运行时,操作系统会分给它一片内存空间,这个内存空间分堆内存空间和栈内存空间,不管是堆内存还是栈内存它们都是内存空间,只是用法不一样,堆空间里存放全局数据,比如代码、常量(就是一些写死的数字、文字等),然后栈空间,用来存放局部数据,局部数据可以理解为在函数中写死的常量、数据,现在就先这样理解,现在没写代码没有画面,等后面写上c++代码了会再说,现在有这样一个概念就行

然后栈有点复杂,栈它的内存空间的使用方式,一个场景比如排队买东西,它是先卖给排在最后一个的人,排在第一个的人要最后才能买到东西,栈就是新来数据会排在最后,最后一个数据会被优先使用,所以使用栈内存空间时,有往里存放数据的代码就必须有取数据的代码,也就是要把栈给恢复了,不然会乱套

然后栈里面的数据只有被断点断下来的时候才是准确的,程序运行中看到的栈里面的数据全部都是乱的全部都是垃圾数据

然后在调用函数的时候一般在调用的函数头部会有提升栈的代码,就是本来栈最后一个数据的内存是22222,调用函数会让22222+30,加多少不固定,代码编译成程序的那一刻编译器会给搞好,这个加的操作是为了防止栈里的数据被搞坏,所以这里有加它就会有减,当函数执行完加多少它就会再减多少

push是把一个数据放到栈内存空间中(放在最后一个位置)

pop是把栈里最后一个数据取出来,也就是把刚刚push拿出来

pushad是把所有寄存器当前的值放到栈里(也是放在最后一个位置)

popad是把刚刚pushad存的值拿出来

push

执行之后,下图中的内存地址与上图不一样,是因为OD卡死了,游戏重启了,如下图可以看到执行push之后它会把数据一直放到栈里最后一个位置

pop

执行之前

执行之后,pop之后把栈里的数据放到pop后面跟的内存地址或寄存器里,然后把栈里的数据删除(esp的值-4,为什么减4?因为32位它是4字节大小)

pushad

执行之前

执行之后

上图执行之后不明显,又执行了一次pushad,可以很清晰看到把eax、ecx、edx、ebx、esp、ebp、esi、edi这八个寄存器的值都给放到了栈里

popad

执行之前

执行之后

然后上方pushad的时候执行了两次,所以好习惯是popad也两次,这一次把栈里的数据改一改,可以看popad的值去哪了

首先右击点修改

输入修改的值

执行之前

执行之后,popad它会把栈中的值重新给到八个通用寄存器


相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 12:16:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 12:16:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 12:16:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 12:16:04       69 阅读

热门阅读

  1. 【C语言】《回调函数》详细解析

    2024-07-12 12:16:04       24 阅读
  2. I18N/L10N 历史 / I18N 指南 / libi18n 模块说明

    2024-07-12 12:16:04       17 阅读
  3. ActiViz中的点放置器vtkPointPlacer

    2024-07-12 12:16:04       20 阅读
  4. MySQL远程登录

    2024-07-12 12:16:04       19 阅读
  5. PostgreSQL 基于时间点恢复

    2024-07-12 12:16:04       19 阅读
  6. 如何理解李彦宏说的“不要卷模型,要卷应用”

    2024-07-12 12:16:04       26 阅读
  7. 解决Spring Boot应用中的内存优化问题

    2024-07-12 12:16:04       17 阅读