BIOS 映像解包器或提取器

BIOS 映像解包器或提取器

我想查看解压的 PC BIOS 映像代码。我看到的第一种方法是从供应商处下载 BIOS Flash 更新,但它是打包的。我该如何解压它?感兴趣的供应商是 Gigabyte、ASUS、Supermicro、HP。第二种方法是完全转储当前 BIOS。我可以在 Windows 或 Linux 上转储 BIOS 映像吗?

以华硕 1MB ROM 为例

0000:0000 | 41 53 55 53   54 45 4B 00   00 00 00 00   00 00 00 00 | ASUSTEK.........
0000:0010 | FF FF FF FF   FF FF FF FF   FF FF FF FF   08 C0 01 00 | ЪЪЪЪЪЪЪЪЪЪЪЪ.ю..
0000:0020 | F1 3F 5C A4   08 00 90 CB   FF FF 11 90   00 00 00 00 | Я?\╓..░кЪЪ.░....
0000:0030 | 01 00 00 00   07 0A 00 00   08 20 09 04   7A 06 01 00 | ......... ..z...
0000:0040 | 5A 7F 06 83   01 00 00 00   11 00 00 00   D0 1F 00 00 | Z..┐........п...
0000:0050 | 00 20 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | . ..............
0000:0060 | 00 00 00 00   A1 00 00 00   01 00 02 00   07 0A 00 00 | ....║...........
0000:0070 | 1A 00 00 00   00 00 00 A4   08 04 08 20   01 04 00 00 | .......╓... ....
0000:0080 | 01 00 00 00   7A 06 01 00   00 00 00 00   00 00 00 00 | ....z...........
0000:0090 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:00A0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:00B0 | 00 00 00 00   00 00 00 00   00 00 00 00   00 00 00 00 | ................
0000:00C0 | 66 48 29 C4   14 A1 20 3E   9C F1 87 83   AA 14 FB DA | fH)д.║ >°Я┤┐╙.Шз
0000:00D0 | 09 83 A3 33   EA F8 B0 68   00 B2 20 2A   9E AA C7 CD | .┐ё3ЙЬ╟h.╡ *·╙гм
0000:00E0 | C7 E7 0C 17   05 C7 27 D7   A5 1B 9B 01   29 4A 41 E0 | гГ...г'в╔.⌡.)JAЮ
0000:00F0 | 58 54 D4 57   11 A4 A8 26   66 D9 AA 9F   B0 C8 5E 09 | XTтW.╓╗&fы╙÷╟х^.
0000:0100 | 2A 7C 3A 08   0F C7 CF 17   A8 78 8E 3C   19 C4 18 CE | *|:..го.╗x▌<.д.н
0000:0110 | B7 DE 2D 5F   71 5D C9 C9   16 51 7A 43   D0 3A 25 E0 | ╥ч-_q]ии.QzCп:%Ю

这看起来不像是可以反汇编的代码(刚刚检查过,其中有 fp 和 int 机器码的混合)。也许它是加密的?

答案1

http://www.phrack.org/issues.html?issue=66&id=11描述 ASUS 1MB *.ROM 文件的解包器:

ASUS BIOS 基于 AMI BIOS,因此我们使用 AMIBIOS BIOS 模块操作实用程序 MMTool.exe 来提取主 BIOS 模块。在 MMTool 中打开下载的 .ROM 文件,选择提取“单链接架构 BIOS”模块 (ID=1Bh),选中“以未压缩形式”选项并保存。这是未压缩的主 BIOS 模块。

答案2

该文件格式完全专有,因此您可能无法找到它的格式或可以读取它的程序。

在 Windows 中,您仍然可以使用 dos 调试命令反汇编 F000:0000 块中的 BIOS,但如今,系统 BIOS 远大于 64 或 128k,因此只有其中一部分在内存的该区域中可见(16 位兼容性部分)。其余部分的保存位置完全取决于 BIOS,使其可见通常涉及在某个硬件寄存器中设置一个位,从而将 RAM 地址块更改为完整的 BIOS ROM。具体细节取决于芯片组,但只能在保护模式下访问。在用户模式下无法操作硬件寄存器和访问该内存。

相关内容