百科问答小站 logo
百科问答小站 font logo



为什么修改esp寄存器会触发异常? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

题主的想法是:把内存映射的地址换个地方,把新的栈指针指过去。目的是为了动态调整栈的位置吧?

但这种做法不可取,也不可能实现。

首先esp的值不仅仅保存在esp里,换句话说,指向栈上的东西,不仅仅是只有esp,比如ebp也是可以用来做寻址的。甚至在内存里,多级指针都是指向旧的内存区域,你不可能也没办法把这些内存里的数据都指向新的栈空间,因为对于内存来说,都是一个一个数值,它是指针,还是一个整型数,没人知道。

所以, 跟权限无关,你这个思路本身就是错的。




  

相关话题

  Windows 9x的存储控制器驱动程序是怎么样的? 
  Linux和Windows可以安装在任何个人电脑上,而安卓却需要为每台设备定制一个版本的原因是什么? 
  为什么 Go 和 Rust 常提供静态编译好的 Linux 程序,而 C 不行? 
  Windows 的文件夹的权限管理为什么乱七八糟的? 
  苹果麦金塔操作系统(macOS)比微软视窗操作系统(Windows) 好用吗? 
  关于malloc返回值的问题? 
  为什么各大手机厂商不积极适配鸿蒙系统? 
  Linux 为什么要对文件区分只读、只写、读写等多种打开方式,而不是直接提供读写? 
  进入内核态究竟是什么意思? 
  Linux服务器搭建了一个PHP项目,结果内存一直在飙升,进程池里看不到异常,有没有大神帮忙解决下? 

前一个讨论
为什么不把push ebp和mov ebp, esp的操作通过硬件方式做进call指令中?
下一个讨论
linux内核切换成分页模式后,ljmp $__BOOT_CS,$1f 这行代码有什么意思?





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利