vmware bios rom文件研究记录
- 逆向
- 2025-12-26
- 5热度
- 0评论
Phoenix BIOS Tool 技术总结
一、ROM 结构
BIOS.440.ROM (512KB) 是 Phoenix BIOS 4.0 格式,包含:
- BootBlock (BB.ROM): 最后 16KB,未压缩,启动引导代码
- 模块区: 32个模块,使用 LZINT 压缩算法
二、模块提取流程
原始ROM → 按已知偏移提取 → 压缩模块文件 (.ROM/.AML/.PGX)
每个模块有固定的起始/结束地址(相对于 0x100000000 - ROM大小):
{"ROMEXEC0", 'X', 0, 0xFFFF0B25, 0xFFFF7749, ".ROM"},
{"BIOSCOD1", 'B', 1, 0xFFFCC446, 0xFFFD2BD7, ".ROM"},
// ... 等32个模块
三、解压流程
1. 模块头结构 (27字节)
[0-1] Magic: 0x42 0x43 ("BC")
[2-3] Signature: 0xD6 0xF1
[4-6] Module ID
[8] Module Type (0x42=BIOSCODE, 0x58=ROMEXEC, 0x47=DECOMPCODE)
[10] Compression: 0x05=LZINT压缩, 其他=未压缩
[11-18] 地址信息
[19-22] 解压后大小
2. 解压方法
- 使用 Phoenix 官方工具 UNINT32.EXE 解压 LZINT 数据
- 解压后重建 BC 头(标记为未压缩)
3. 特殊处理: BIOSCOD0 BIOSCOD0 分成两部分存储在 ROM 中:
part1: offset=0x61150, size=3649
part2: offset=0x52BE1, size=40207
需要合并后再解压。
四、DMI 字符串修改
ROMEXEC0.ROM 可修改字段: | 字段 | 偏移 | 最大长度 | |------|------|----------| | manufacturer | 0x02749 | 12 | | product | 0x02765 | 23 | | vendor | 0x027CA | 17 | | board | 0x027E6 | 32 | | welcome | 0x028EE | 31 | | copyright | 0x02966 | 32 | | chipset | 0x06352 | 5 |
BIOSCOD1.ROM 可修改字段: | 字段 | 偏移 | 最大长度 | |------|------|----------| | bios_vendor | 0x0035 | 24 | | bios_version | 0x004E | 4 | | bios_date | 0x0053 | 10 | | sys_mfr | 0x007A | 12 | | sys_product | 0x0087 | 24 | | board_mfr | 0x00B9 | 17 | | board_product | 0x00CB | 32 | | RAM slots (64个) | 0x05A6起 | 14 |
不可修改字段(代码段,修改会导致无法启动):
- ROMEXEC0: version (0x0375B), copyright2 (0x0377C)
五、打包流程
使用 Phoenix 官方工具:
1. PREPARE.EXE ROM.SCR → 压缩模块,生成 .MOD 文件
2. CATENATE.EXE ROM.SCR -O:BIOS.440.ROM → 合并生成最终ROM
ROM.SCR 脚本格式:
BANKS -N:1 -S:512
COMPRESS LZINT
BOOTBLOCK BB.ROM -S:16
BIOSCODE BIOSCOD0.ROM
BIOSCODE BIOSCOD1.ROM
ROMEXEC ROMEXEC0.ROM
ROMEXEC ROMEXEC1.ROM -Z
...
六、工具使用
# 解包
pbt.exe extract BIOS.440.ROM output
# 随机化硬件信息
pbt.exe randomize output
# 打包
cd output
pbt.exe build ROM.SCR BIOS.440.ROM
七、嵌入工具
三个 Phoenix 官方工具以十六进制数组形式嵌入到 EmbeddedTools.hpp:
- UNINT32.EXE: LZINT 解压
- PREPARE.EXE: 模块压缩
- CATENATE.EXE: ROM 合并
运行时提取到临时目录,使用后自动删除。
这套工具实现了 Phoenix BIOS ROM 的完整解包、修改、打包流程,支持随机生成匹配的真实硬件配置信息。
