问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

栈是遵循先进后出原则,那指针是用来干嘛的?

发布网友 发布时间:2022-04-26 10:13

我来回答

3个回答

热心网友 时间:2022-06-27 05:48

当然可以啊,只要你能不弄错先后,知道自己改的是什么,修改完后恢复栈顶指针,完全可以修改栈数据,这也是种hack技术,不过这对编程技术要求很高,很危险,一不小心就会导致程序崩溃,然后你都不知道错在哪里。

 

其实,你可以编写一个简单的函数,在main中调用它,编译后设置断点,然后调试运行,执行到断点处停止后,在调试菜单内选择反汇编观察这段代码,你会发现,编译器会在真正执行函数前都会安排一段指令修改栈数据的。

 

如下

void fun()
{
00164810  push        ebp  //基指针入栈备份
00164811  mov         ebp,esp  //栈顶指针赋值给基指针备用
00164813  sub         esp,0C0h  //修改栈顶,上移C0个字节,留出空间给临时变量
00164819  push        ebx  //地址寄存器入栈备份
0016481A  push        esi  //源址寄存器入栈备份
0016481B  push        edi  //目的寄存器入栈备份
0016481C  lea         edi,[ebp-0C0h]  //原栈顶指针向上偏移C0个字节作为目的地址存入目的寄存器,注意此时ebp包含的是栈顶指针
00164822  mov         ecx,30h//设置循环次数,每次赋值一个双字,即4字节,所以4*30h正好为C0个字节。  
00164827  mov         eax,0CCCCCCCCh  //设置填充值,4个字节的cc,cc为中断指令3,即int 3,防止程序意外跳转到该临时数据区执行时会调用系统中断#3处理
0016482C  rep stos    dword ptr es:[edi]//执行循环填充数据

热心网友 时间:2022-06-27 05:49

不行 因为要遵循先进后出的原则

热心网友 时间:2022-06-27 05:49

我靠~~~~~~~这么专业的知识~~~~~~~~~~~~~~~~~~~~~
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
青椒炒肉丝家常做法 QQ空间背景覆盖了自定义栏,那又要怎么取消 QQ空间自定义时不小心把模块隐藏了,要怎么找回来? 海底的火山存在吗? vue中路由跳转的三种方式 简洁易懂 vue路由调转的四种方式 ...状态详解介绍_拳击俱乐部Punch Club属性状态详解是什么 夜经济新业态是什么 南昌为什么要搞夜经济 夏天天热,不用冰箱的话,肉怎么保鲜?有没有比较专业的方法呢? 菜鸟:刚学java,堆区,栈区,静态区,代码区,晕了!!! windows 7中内存保护机制不包括哪项技术? 怎么输出栈的内容,并且栈里的内容不变,就是栈里仍和输出之前一样 C语言删除栈中重复元素,用数组实现,不用指针 数据结构的课程设计!!如何把这里的栈结构用链队列替换? 怎样将迷宫求解的栈替换成队列? Java代码的执行顺序是怎么样的呢? 汽车在启动的时候会有电流声,滋滋的,在车内听不到 汽车的发电机有滋滋响的声音是怎么回事? 踏板摩托车电启动时有和电流声一样的滋滋声,声音很小,是怎么回事啊 汽车开启大灯后有滋滋电流声 速腾自动挡1.6接通电源后变速箱插头滋滋的电流声,启动车后就没有啦 宝马x1怎么通电不启动有滋滋的电流声? 车有滋滋的电流声,驾驶室里,怎么回事? 速腾车通电进气格栅和中控有蜂鸣的电流声 车辆通电后,发动机仓传来滋滋电流声是怎么回 新买的汽车发动机有滋滋电流声什么原因 汽车不能打火有滋滋的电流声音是什么造成的呢 打开电源后车外部有滋滋的声音 车辆通电后,发动机仓传来滋滋电流声是怎么回事 用C语言怎么写输出栈中元素,并打印栈中元素 如果用一个栈代替9.2节中的拓扑排序的算法,是否得到不同的排序?为什么... 石家庄幕墙设计哪家最专业?地址是什么? unix变成中exec的问题 深圳玻璃幕墙承包公司哪家比较好? 数据结构 关于栈top指针位置问题 幕墙公司排名,幕墙设计公司哪家好? Android中,FragmentTransaction类的replace()方法的作用是什么? 建筑幕墙设计做得最好的公司? 谁给我解释下,什么是在栈上分配内存,与在堆上分配内存 成都幕墙设计公司推荐 C语言求指导 请问幕墙设计公司哪家好 .equals的问题 广州幕墙设计公司哪家最好? 海南哪有技术很强的建筑幕墙设计顾问公司及幕墙工程公司? 深圳比较好的幕墙公司有哪些? 深圳哪些幕墙设计公司比较好 找玻璃幕墙公司做设计 上海哪家幕墙设计公司最好?