Can RAM modification damage hardware?

时间:2015-10-30 22:54:00

标签: assembly x86 hardware bios hardware-programming

Can a real mode program which can write to arbitrary memory areas, damage hardware? Not included in this scenario are interrupt calls or other things that can be done in real mode - just pure writing to memory.

This page shows a memory map of x86 systems, and I see stuff like BIOS data area; so I fear that writing to this area might do persistent changes to the BIOS, or at least change the BIOS settings to unexpected values. The are probably more things that can be destroyed.

I often read that hardware access in real mode can destroy hardware; but they do not explain the circumstances which have to be made.

Since I am only asking about writing access without invoking interrupts, my main question is, if changes to the memory can do persistent changes; and if yes, which and why?

1 个答案:

答案 0 :(得分:7)

假设现代80x86硬件;不会导致持续变化和/或损坏的事情包括:

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

  • 写入传统ROM复制到RAM的区域(区域从0x000C0000到0x000FFFFF)。 请注意,这实际上是RAM,但在POST后设置为“忽略写入”内存控制器。

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

导致“暂时持续变化”(可以修复)的事情包括:

  • 将垃圾写入CMOS寄存器;这不比在旧系统上使用扁平CMOS电池更糟糕,并且下次启动时可能会导致“CMOS设置无效”错误(由于校验和不匹配);并且可以通过固定。启动时固件的配置实用程序。

  • 删除存储设备(硬盘,USB闪存等)上的数据。可以通过从备份恢复和/或重新安装软件来修复。

可能导致不可修复的持久性更改的事情包括:

  • 写入固件的闪存。这通常(但不总是)涉及复杂的序列以解锁它,然后“猜测”正确的加密密钥和/或数字签名。 请注意,如果您故意尝试这样做,这将非常困难,而且几乎不可能发生意外。

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

可能导致实际物理损坏的事情包括:

  • 反复粉碎软盘驱动器头以防止其停止(例如,通过寻找可能持续数小时的“气缸99”)以试图降低软盘驱动器的预期寿命。

  • 尝试在一些非常古老的“VGA only CRT”显示器上使用高分辨率视频模式(无法处理更高频率和爆炸)。 请注意,吹这些古老的显示器是他们唯一有用的东西。

  • 尝试在一些廉价且讨厌的(和罕见的)笔记本电脑上设置不受支持的视频模式(例如,具有高于理智的刷新率);可以在液晶显示器中煮沸液体。

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