RAM修改会损坏硬件吗?

Can RAM modification damage hardware?

可以写入任意内存区域的实模式程序会损坏硬件吗?这种情况不包括中断调用或其他可以在实模式下完成的事情——只是纯粹写入内存。

This page显示了x86系统的内存映射,我看到了BIOS数据区之类的东西;所以我担心写入此区域可能会对 BIOS 进行持久更改,或者至少将 BIOS 设置更改为意外值。可能还有更多可以销毁的东西。

我经常读到实模式下的硬件访问会破坏硬件;但他们没有解释必须做出的情况。

由于我只询问写访问而不调用中断,我的主要问题是,如果对内存的更改可以进行持久更改;如果是,是哪个以及为什么?

假设现代 80x86 硬件;不会造成持续变化 and/or 损害的事情包括:

  • 更改计算机重置时重置的任何内容;包括RAM、缓存、CPU的微代码等所有内容

  • 写入遗留ROM复制到RAM的区域(从0x000C0000到0x000FFFFF的区域)。 注意这里其实是RAM,只是在POST之后的内存控制器中设置为"ignore writes"。

  • 写入实际包含固件的区域(以0xFFFFFFFF结尾的"n MiB"区域)。

会导致 "temporarily persistent changes"(可以修复)的因素包括:

  • 将垃圾写入 CMOS 寄存器;这并不比在旧系统上使用没电的 CMOS 电池更糟糕,并且可能会在您下次启动时导致 "CMOS settings not valid" 错误(由于校验和不匹配);并且可以通过修复。启动时固件的配置实用程序。

  • 破坏存储设备(硬盘、USB 闪存等)上的数据。可以通过从备份恢复 and/or 重新安装软件来修复。

可能导致无法修复的持久性更改的因素包括:

  • 正在写入固件的闪存。这通常(但不总是)涉及一个复杂的序列来解锁它,然后是 "guessing" 正确的加密密钥 and/or 数字签名。 请注意,如果您有意尝试这样做,这是非常困难的,而且几乎不可能是偶然的。

  • 写入设备的闪存 ROM(如果有的话),其中可能包括硬盘的内部控制器、打印机等。这通常(但不总是)涉及防止它的保护措施。 请注意,这几乎不可能是偶然发生的。

可能造成实际物理伤害的事情包括:

  • 反复撞击软盘驱动器的磁头(例如,通过寻找可能几个小时内不存在的 "cylinder 99")以试图缩短软盘驱动器的预期寿命.

  • 尝试在一些非常老旧的 "VGA only CRT" 显示器上使用高分辨率视频模式(它们无法处理更高的频率并且会爆炸)。 请注意,炸毁这些古老的显示器是它们唯一的用处。

  • 试图在一些廉价和令人讨厌的(和稀有的)笔记本电脑上设置不受支持的视频模式(例如,刷新率高于理智); liquid crystal display.

  • 里面可以煮沸液体的地方

请注意,上面的大部分内容要么需要使用保护模式或长模式(并且不能在实模式下工作),要么以某种方式涉及IO端口(不仅仅是内存写入)。