加入收藏 | 设为首页 | 会员中心 | 我要投稿 泉州站长网 (https://www.0595zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

看内核戏CPU

发布时间:2021-05-04 13:14:29 所属栏目:评论 来源:互联网
导读:根据常州站长网 Www.0519Zz.Com报道 想到猫蛇之战,是因为今天在格友会讲群里一位同行问了一个很有深度的问题。 (前方内容只适合技术控,其他读者止步) 简单说问题是,调试器是如何访问不能访问的内存的。 看了这个问题,我立刻觉得这位同行是有功力的。因为
根据常州站长网  Www.0519Zz.Com报道


想到猫蛇之战,是因为今天在“格友会讲”群里一位同行问了一个很有深度的问题。

(前方内容只适合技术控,其他读者止步)

简单说问题是,调试器是如何访问不能访问的内存的。

看了这个问题,我立刻觉得这位同行是有功力的。因为普通的程序员是问不出这样的问题的。

要理解这个问题,必须有些底层的基础。

***个基础是要有保护模式的概念。很多同行都知道,今天的CPU是运行在所谓的保护模式中,软件访问的内存空间都是虚拟空间。而且这个虚拟空间中的内容是分三六九等的,是分平民区和富人区的,是分道路和深坑的。因为此,访问内存时是要小心的,有些地方可以访问,有些地方一访问就可能出大问题的,爆炸崩溃甚至“死亡”的。

大多数的应用程序崩溃和系统蓝屏都是因为访问了不该访问的地方。

第二个基础是对调试器有比较深的认识,知道在调试器里可以放心大胆地想访问哪里就访问哪里,不用那么小心。

举例来说,在普通程序里,如果访问空地址,那么不死也伤半条命(处理不好,就被系统杀了)。但是在调试器里,dd 0没有问题么问题来了,为啥普通程序一碰就爆炸,而调试器访问却安然无恙呢?

坦率说,***次在脑海中出现这个问题时,也令我困惑了一阵。直到后来发现了内核中的一个神秘机制。这个机制是跨操作系统的,Windows中有,Linux也有,而且都是相同的名字,叫Probe。

有点令人诧异的是,连函数名很类似,比如Windows(NT内核)中的两个函数为:页错误的do_page_fault函数中,会判断这个标志,如果发现禁止条件,则忽略这次访问错误。

讲到这里,问题说清了一半,要继续深追的话,还有一些细

(编辑:泉州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读