修改主板和 DMI 信息

一、修改 DMI 信息

1 修改 BIOS.440.ROM 文件中的字段

我们复制虚拟机安装目录中的 x64 目录下的 BIOS.440.ROM 文件,并用 PhoenixBIOSEditor 程序打开,我们可以看到未更改的原始主板信息如下,里面包含了一些 VM 相关的虚拟化信息,其中圈起来的字段都是需要修改的:

未修改状态下,我们通过 AIDA64 软件查看 DMI 信息如下:

接下来我们对 Motherboard Manufacturer Name(DMI 主板制造商)Motherboard Model(DMI 主板产品)System Manufacturer Name(DMI 系统制造商)System Product Name(DMI 系统产品) 字段进行更改。

PhoenixBIOSEditor 打开复制的 BIOS.440.ROM,然后找到 DMI Strings 条目,更改如下:

注:System Serial Number(DMI 系统序列号) 字段更改无法生效。

然后点击工具栏的 File -> BuildBIOS...,将修改后的 BIOS.440.ROM 进行导出。

随后将更改的 BIOS.440.ROM 文件覆盖虚拟机安装目录中的 x64 目录下的同名文件,然后运行虚拟机,用 AIDA64 软件查看 DMI 主板信息如下:

2 修改 System Serial Number(DMI 系统序列号)字段

该字段位于 vmware-vmx.exe 中,我们通过 010 Editor 软件打开 vmware-vmx.exe 文件,使用 ASCll(A) 模式搜索关键字 VMware-%s来查找该字段:

可以定位到 System Serial Number(DMI 系统序列号) 字段,可以看到该字段占 16 个字节,因此最多可以填充 15 个字符串,可以根据不同的品牌生成规则对该字段进行动态生成。

因此我们可以修改该处的内存来实现该字段的修改,为了能够动态的修改该字段,我们可以在 vmware-vmx.exe 加载到内存后对此处进行动态修改。

2.1 字段的查找与修改

:VMware-%s(占 16 个字节,选择第一个)
:2048441ED(ASCll 文本,多余用 00 填充)
文件偏移:8D8A48
内存偏移:8D9448

表示该字段在 vmware-vmx.exe 中的原始 ASCll 文本(可通过该文本搜索定位),表示修改后的 ASCll 文本,文件偏移表示该字段在 vmware-vmx.exe 文件中的偏移位置,内存偏移表示该字段被加载进内存后的偏移位置。

2.2 字段的生成规则

9 个随机十六进制数(首个数字非 0,多余用 00 填充)。

3 修改 UUID(DMI 系统 UUID) 字段

该字段前两个字节默认为 56 4D(即字符串 VM),字段可以在 .vmx 的配置文件中修改,找到 uuid.bios 配置项,将其修改为如下:

注:此配置被修改后,重启虚拟机要选择 我已移动该虚拟机,否则该配置项会被重置为默认值。

则我们可以在虚拟机中看到如下效果:

可以看到,DMI 系统 UUID 成功被修改,此时 DMI 系统序列号 后面追加的字节被同步修改,结合之前的分析可以得知 VMware-%s 中的 %s 其实是用 DMI 系统 UUID 替换的,这二者之间有什么必然关系吗?

为了验证这个结论,我们找一台正常的笔记本电脑,打开配置如下:

可以得知是没有必然联系的,因此二者可以单独分开修改。由于 DMI 系统 UUIDvmware-vmx.exe 文件中位于 .data 段,该段在加载进内存后会进行初始化,因此我们无法直接在文件中修改,可以通过动态修改内存的方式来对其进行修改。

3.1 字段的查找与修改

:无(.data 段数据,修改文件后加载进内存会被覆盖)、56 4D E8(十六进制字节,uuid 前两个字节)
:2048441E2048441E(ASCll 字串)、10 18 E8(十六进制字节)
文件偏移:无、55BDD4
内存偏移:C16A10

二、修改主板信息

1 修改 BIOS 类型信息

posted @ 2025-07-02 20:33  lostin9772  阅读(140)  评论(0)    收藏  举报