Cross Post: 千万不要硬编码 SMBIOS 机器 UUID
imbushuo
Please mind the gap
故事是这样的:我去年无聊搞了 Lumia950XLPkg,之前我也展示过启动 Debian 了。当时弄的时候并没有预计到这个玩意会发布,于是为了快速开发,我在 SMBIOS 里硬编码了一个机器的 UUID:
SMBIOS\_TABLE\_TYPE1 mSysInfoType1 = {
{ EFI\_SMBIOS\_TYPE\_SYSTEM\_INFORMATION, sizeof (SMBIOS\_TABLE\_TYPE1), 0 },
1, // Manufacturer String
2, // ProductName String
3, // Version String
4, // SerialNumber String
{ 0x0bc52bb9, 0x9473, 0x4875, { 0xbe, 0x2a, 0x39, 0x73, 0x07, 0x6c, 0x20, 0xe2 } },
SystemWakeupTypePowerSwitch,
5, // SKUNumber String
6, // Family String
};
https://github.com/imbushuo/Lumia950XLPkg/blob/9bc2d337cdf0d1417bc0598791c912a5b985daf4/Driver/SmBiosTableDxe/SmBiosTableDxe.c#L151现在奇葩的事情出现了,有用户在 LumiaWOA 的群里说:
用户告诉我 "Activated using Digital License"。所以现在这件事情变成了 Windows 10 加入的方便用户重装的功能被相当程度的自动滥用了:
- 这些机器拥有相同特征的 CPU
- 这些机器有完全一致的 ACPI DSDT/SSDT 设备列表和描述
- 这些机器有几乎完全一致的 SMBIOS (我还是稍微更新了一个东西的)
- 这些机器也有完全一致的 SMBIOS 机器 UUID
造成的结果就是,连上网就自动激活。笑死我了,我觉得我下个版本得修掉这个问题 (facepalm)。是不是有人用 Retail/MAK Key 激活过 Windows 10 on Lumia 950/950 XL 了……
附言:
- 不知道有没有 PC OEM 这么干。要是有的话就很刺激了
- 当年 Ghost XP 的时候好像有个类似的问题,不过是遥测上的,间接导致了 Windows 错误报告原本的作用大减
- 所有 Windows Phone 的 stock UEFI 都有类似的固定 SMBIOS GUID
- Device & Experience (OSG/WDG) 的人,你们就没觉得出现了同样特征的机器在全世界各地激活这样的事情很奇怪吗,遥测应该能发现的吧(
Also posted @ 千万不要硬编码 SMBIOS 机器 UUID - V2EX