DOS 上曾经有一个名为Sourcer 的反汇编器,可以反汇编 BIOS 例程。但是,我们如何从软件访问 BIOS ROM 来做这样的事情呢?
如何反汇编 BIOS 程序?
逆向工程
拆卸
BIOS
2021-06-20 02:59:43
1个回答
在过去,您通常可以转储 1MB 内存的大部分(例如 E000:0000 到 F000:FFFF)来检索 BIOS ROM 的副本,但现在 BIOS 不再适合 64K 甚至 128K,因此所有这些您将获得 UEFI 的 CSM(兼容性支持模块)的副本,其中大部分代码位于其他地方,通常超过 1MB 标记。
要检索实际的完整 BIOS 代码,您需要从闪存芯片读取 ROM。这在同一台机器上是可能的,例如通过使用flashrom或有时板供应商的固件更新工具,如果它提供“备份”选项。有时,操作系统可能会阻止对闪存的访问(以防止恶意软件修改 BIOS),在这种情况下,您可能必须使用外部闪存编程器。
获得 ROM 副本后,您可以开始拆卸它。但是,请记住,现代 BIOS 通常实现 UEFI 标准,其中只有一小部分代码(围绕重置向量)是 16 位的,而大部分代码在 32 位(或 64 位)保护模式下运行, 通常使用以 PE(Portable Executable) 格式实现的模块。由于甚至 UEFI 固件的 ROM 的结构是标准化的,因此您通常可以使用UEFITool等工具提取单个模块进行分析。有关 UEFI 的更多信息,请参阅 UEFI 和 PI 标准,可从www.uefi.org免费获取。