堆栈2

news/2024/12/5 3:06:41/文章来源:https://www.cnblogs.com/Lyjia-n/p/18579654

1、

 2、push 3

      push  2

       push  1

只有ESP发生变化(ESP=ESP-c),1、2、3也被压入栈

 

 

 3、CALL 00401005(按F7不按F8)

把这个值(它的下一行)压入堆栈,EIP修改00401005(与9相同)

按F7之后会生成一个JMP指令

4、PUSH EBP

      MOV EBP,ESP

      SUB ESP,48

 

 5、PUSH EBX

      PUSH ESI

      PUSH EDI

 6、

EBP-48放入EDI,12赋值给ECX,赋值EAX,第四行是重复12次(EBP-48,48/4=12)将CCCCCCCC放入EDI的内存中,STOS每执行一次就会加四或减四(由D位决定)

 

 7、

EAX变成2(EBP+C的位置是2)

 

 8、

原本ESP=EDI,第一行是EAX=ESP-4,第二行是ECX=1(EBP+8的位置是1),第三行ECX=ESP-4

 

 9、CALL 0040100A(在00401097那一行)

先将它的下一行0040109c压入栈

esp-4,eip+5,esp=12FEC0

 10、

 ebp压栈,esp-4,esp赋给ebp,esp-44

 11、

 (1)保护现场EBX,ESI,EDI

(2)ESP-44存入EDI

(3)11赋给ECX

(4)CCCCCCCC赋给EAX

(5)将EAX重复写入到以EDI为首的地址的缓冲区中,重复11次,每次EDI+4

EBP=12FEBC

12、

 把0A放到EBP-4;把EBP+8中的1放到EAX;EBP+C中的2再加到EAX中,此时EAX为3;EBP-4的0A加到EAX中,此时EAX为D;堆栈不变,ESP不变

 13、

 

 14、

 ESP=EBP;把里面的值0012FF20pop到EBP里面去,同时ESP+4

 

 15、

RETN

相当于pop eip,所以首先ESP+4变成12FEC4,EIP是40109c

 16、ADD ESP,8

 

 17、

 把EAX的值D放入EBP-8;EAX=2;EAX=2+D=F;EAX=F+3(EBP+10)=12;不改变堆栈

 18、

 ESP=ESP+C=12FECC+C=12FED8

 19、ADD ESP,48

 20、CMP EBP,ESP

相当于减法,减了之后等于0,Z位变成1

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846352.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vxe-table 在 vxe-tabs 页签组件中使用表格

在 vxe-tabs 页签组件中使用 vxe-table 表格组件,自适应页签高度。 官网:https://vxetable.cn/<template><div><vxe-tabs padding><vxe-tab-pane title="页签1" name="1"><vxe-grid v-bind="gridOptions1"><…

jar包目录介绍

jar包目录介绍BOOT-INF:包含class文件和依赖jar META-INF:包含Class-Path:指定执行运行jar时的classpath; Main-Class:指定运行时的main方法所在类 org:包含springboot一些文件重要信息官网:https://ais.cn/u/vEbMBz

傻瓜式jvm基础学习

Q:jvm调优是在做什么? A:通过修改jvm参数和更换合适的垃圾回收器从而达到提高垃圾回收效率、降低停顿时间,提高系统的吞吐量和响应速度。从上面的问答中可以得到两个概念,jvm参数、垃圾回收器。程序计数器存储当前线程正在执行的Java方法的字节码指令地址的内存区域,作为…

既然overleaf崩了,那就立马尝试装本地的latex吧

目前还没定下来具体的latex搭配方案,只是先安装了各个软件 参考博客:https://zhuanlan.zhihu.com/p/607473890VSCode+Texlive+LaTeX Workshop+Copilot AI辅助写作 (推荐)参考博客:https://blog.csdn.net/Luan__Yu/article/details/143562703 超详细2024版Latex安装Texlive…

Everything 重大更新(新增拼音搜索 + 文档内容搜索)

Everything 重大更新(新增拼音搜索 + 文档内容搜索)原文:https://mp.weixin.qq.com/s/rrrijG0HXbQaCssWN9zAkQ Everything v1.5a 新版本开启拼音搜索的方法 现在官方更新,终于直接内置了中文拼音缩写搜索功能了! 另外,新版 Everything 还加入了呼声很高的文件全文内容搜索功…

jfinal 快速入门

0000package cn.jbolt.starter;import cn.jbolt.config.AppConfig; // 导入应用配置类 import com.jfinal.server.undertow.UndertowServer; // 导入Undertow服务器类// 主应用类 public class App {// 主函数,程序的入口点public static void main(String[] args) {// 创建Un…

高精度计算器-Qt版

代码 widget.h 文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <vector> #include <stack> using namespace std;QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:…

Power Automate 获取用户属性

前言最近,要在项目里需要获取用户的属性正文在Power Automate里有个Office 365 Users,里面有Action可以获取用户属性执行的结果,可以获取到很多属性,当然,这里都是默认的,如果想要更多的属性,在Select fields里添加就可以了。结束语想要其它的属性,参考官网就可以了。u…

JavaSwing 事件处理

1. 事件类型 2. ActionListenera:如果同一个组件添加了多个监听器,则每个监听器都会被执行, 后添加监听器会先被执行!b: 同一个监听器对象,可以监听多个组件!try{BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;o…

C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第11周学习总结

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第11周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十一周作业这个作业的目标 <1.学习计算机科学概论第15,16章 并完成云班课测…

牛客周赛 Round 70 个人题解

牛客周赛 Round 70 个人题解 (A~G) 牛客周赛 Round 70 A. 小苯晨跑 #include<bits/stdc++.h> #define endl \n using namespace std; void solve(){int a,b,c,d;cin>>a>>b>>c>>d;if(a==b && b==c && c==d){cout<<"NO…