【发布时间】:2017-06-12 13:54:40
【问题描述】:
我知道,在过去使用 C 语言时,您可能会搞砸指针和内存分配,并且可能会意外损坏其他正在运行的程序或程序之外的操作系统本身,并导致系统崩溃。这将需要重新启动以收拾残局并继续程序开发。
系统安全性改进是否阻止了这种情况的发生?
在过去的 MSDOS 和 Windows 3.1/95/98/Me 以及 10 版之前的 MacOS 中(通常在抢占式多任务成为一切标准之前)系统安全性通常不存在。程序可以完全控制随时随地写入数据。
但现在随着更现代的系统设计和流程安全性,程序通常会被系统安全性阻止意外或故意损坏其他任何东西。
现代处理器的执行禁用功能也可能有助于防止意外跳转到随机内存位置并将那里的任何内容作为处理器机器代码运行。
那么,在不尝试破解操作系统安全性的情况下,您可以将现代 C 编程搞砸到什么程度?
你还能设法让整个系统意外崩溃吗?我认为这不再可能。内核或其他系统安全介入并停止操作。
您是否会破坏您的登录环境并不得不退出并重新登录?我认为这也被阻止了,因为进程通常不应该访问其他进程内存空间,即使在您自己的登录安全环境中也是如此。
总的来说,现在用 C 进行编程似乎比过去容易得多,这只是因为这些系统保护现在无处不在,可以防止你对自己和系统造成伤害。
【问题讨论】:
-
好吧,普通用户程序是受系统保护的——但是如果你写 e. G。设备驱动程序,您很快就会回到以前的状态 - 想象一下在中断服务例程中取消引用空指针......
标签: c security crash environment