Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 检测堆栈溢出大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

操作系统如何检测用户空间程序的堆栈溢出[然后将SIGTERM或SIGSEGV发送到那些用户空间程序]? 答案取决于目标架构和特定操作系统.既然这个问题被标记为 Linux,那么你就会对这个问题产生偏见,而这个问题似乎更为笼统. 在具有MMU保护支持的复杂OS或RTOS(例如Linux或QNX Neutrino)中,可以使用存储器保护机制,例如已经提到的保护页面.这样的OS当然需要具有MMU的目标.
操作系统如何检测用户空间程序的堆栈溢出[然后将SIGTERM或SIGSEGV发送到那些用户空间程序]?

解决方法

答案取决于目标架构和特定操作系统.既然这个问题被标记Linux,那么你就会对这个问题产生偏见,而这个问题似乎更为笼统.

在具有MMU保护支持的复杂OS或RTOS(例如Linux或QNX Neutrino)中,可以使用存储器保护机制,例如已经提到的保护页面.这样的OS当然需要具有MMU的目标.

没有MMU支持的更简单的OS和典型的RTOS调度内核可以使用许多方法.最简单的方法是在栈顶部放置一个保护签名,在调度程序运行时检查该签名是否有修改.这有点昙花一现,它要求堆栈溢出实际上修改了签名,并且在下次运行调度程序之前导致的损坏不会导致崩溃.一些具有片上调试资源的系统可能能够在签名字上放置一个访问断点,并在命中时引发异常.

在开发中,一种常见的技术是首先用签名填充每个线程堆栈并让线程定期检查“高潮”并且如果超过某个百分比水平则发出警告.

大佬总结

以上是大佬教程为你收集整理的linux – 检测堆栈溢出全部内容,希望文章能够帮你解决linux – 检测堆栈溢出所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。