成功修改港版联想 ThinkPad T420s BIOS 包含 TP-8C slic2.1

下午捣鼓了一个下午,终于将我的水货 T420s 的 BIOS 修改了,现在已经包含了正确的 TP-8C slic2.1,并通过了 Windows 7 旗舰版 OEM 激活认证。

参考 51nb 上的教程(T420 X220 T420s T520 W520 E420 E520的BIOS2.1已破解啦)(另有 BIOS 之家的原帖:ThinkPad 220、420、520 全系列 UEFI BIOS机型 SLIC永久修复),经过一次失败,终于成功修改了 T420s 的 BIOS。下面详细记录修改过程,以供参考。

敬告:

因自行修改升级 BIOS 有较大风险,请谨慎!出现问题,责任自负。

 

以下内容仅供参考。

0. 目录

  1. 背景简介
  2. 备份当前 BIOS
  3. 修改 BIOS
  4. 将修改后的 BIOS 写入
  5. 后记

一. 背景简介

为什么要修改 BIOS 呢?目前,Windows 7 比较完美的破解方式是通过OEM 方式激活,而 slic 表是 OEM 激活中的关键部分。我们可以选择喜欢品牌的 slic,修改加入本机的 BIOS 中,实现 Windows 的 OEM 完美激活。关于 slic 表的详细介绍,请参考SLIC marker的那些破事一文,不能完全看懂也没关系。

到 Windows 7 之后,微软要求使用的 slic 表为 2.1 版本。没有预装 Windows 7 系统的水货联想 ThinkPad 笔记本电脑的 BIOS 中实际上已经包含了正确的 slic 2.1 表,只是被标记为非活动状态。只要修改机器对应的 BIOS (一般要求严格对应)并重新写入,即可让其 slic 2.1 处于激活状态。并且这种修改不会因为后续的 BIOS 升级而消失。

二. 升级并备份当前 BIOS

不知道本机的 BIOS 版本也没关系,可以直接到联想官网下载最新的并执行升级,于是机器的 BIOS 就是最新版本了。

联想官方 BIOS 升级工具下载

上图第一个就是可启动光盘镜像(后面用),第二个 BIOS Update Utility … 是可以在 Windows 下直接安装运行进行 BIOS 升级的工具。图中给出的是当前的最新版本 BIOS 1.30 版。

据说现在联想中国官网不能下载光盘镜像,所以就到美国站点下载了。

进行升级可以直接下载第二个,运行之,按照提示进行操作即可。

联想提示:升级 BIOS 时要保证电脑使用外接电源供电,而不能使用电池。升级完毕会要求重起计算机。

重起计算机后,进入 C 盘,文件夹 C:\DRIVERS\FLASH 下有个数字字母组成名字的文件夹,进入,运行 winflash.exe 可备份当前 BIOS:

使用 winflash 备份 BIOS

  1. 将该文件夹中的 BIOS.BAK 文件改名为 BIOS.rom
  2. 双击运行 winflash.exe
  3. 点选 Backup BIOS only (仅备份 BIOS);
  4. 指定备份位置,点选刚才重命名后的文件 BIOS.rom
  5. 单击 Backup 执行备份。

将该 BIOS.rom 备份一份,以防修改错误。

三. 修改 BIOS.rom 以激活 slic 2.1

使用 16 进制编辑软件,如 UltraEdit (这里用的是 17.00 汉化版)编辑 BIOS.rom 文件。

查找十六进制数据块十六进制的 C4000100010003000000,我的 T420s 出现在 0025e050h 的那一行,该数据段前面是 83 xx (xx 在这里是 F5)。

使用 UltraEdit 编辑 BIOS.rom 查找特征数据段

如果继续查找(Ctrl+F,然后单击 下一个),后面还有 4 段 C4000100010003000000,共 5 段。其中前 4 个前面均是 83 xx,最后一个之前是 E3 xx。分别位于 0025e110h, 0025e1d0h, 0025e290h, 0025e360h 等行。

在紧挨着 C4000100010003000000 之后有连续 182 个字节(图中蓝色选中部分),加上前面 83xxC4000100010003000000 或 E3xxC4000100010003000000,构成一个区块,即一个 SLP 表。其后连续的两个 00 是标识符。再接着就是下一个 SLP 表了。

还可以看出,4 个以 83 xx 开头的 SLP 表,第一个和第三个是有数据的,另两个后 182 字节都是 00。第一个不是空块的 83xxC4000100010003000000 后面有 182 字节数据。把前面 180 字节每字节都用 FF 减除一下,加上后面的 181 182 字节不用减除的,这合起来就是 SLP 表。其实呢,BIOS 还有一个 SLP 表,不过是加密的。那就是另一个不是空块的 83xxC4000100010003000000 后面的 182 位数据,它就是正确的 SLP。(每个机器可能都不一样。)

联想的 BOIS 设置里面,83 标识就表示这一块是无效的。有效标识的 SLP 表是以 E3xxC4000100010003000000 打头的。在没slic 2.1 表的 BIOS 里面,这个标识后面 182 位全是 FF 数据。其实只要把这个和那个加密的 SLP 对调一下,就是有 SLIC 2.1 的 BIOS 了。

开始修改:

A.  定位到第三个(即第 2 个非空的)以 83xxC4000100010003000000 开头区块(本例子在 0025e1d0h 行),该区块后面 182 字节即是正确的数据;

B. 选中 83 xx 那个 8,从键盘输入 E,这样该数据块就被改成以 E3xxC4000100010003000000 打头的了;

C. 选中这个修改后从 E3 xx 起始的 194 字节数据(注意看 UltraEdit 右下角的提示数字),右键单击,点选 剪贴板 ——> 用户剪贴板1,然后再右键单击,点选 复制

D. 选中该数据前面一个 83 xx 开头的数据块(即本例中 0025e110h 行中间开始的那个后续数据都是 00 的块),同样选中 194 字节,右键单击,点选 粘贴,这样就实现了有效数据块的移动,如下图;

移动有效 SLP 数据块

E. 然后将无用数据块以 FF 填充。需要填充的块包括修改过(83 ——> E3)的那一块,其后紧邻的一个 83 xx 开头的空块(数据为 00),最后的原本即是 E3 xx 开头但数据为 FF 的那块,连同它们之间用作分割的 00 00 两个字节,统统以 FF 填充。如果不嫌麻烦,可以慢慢输入 F(千万不要全部选中后输入 F,一次只能选中一位),或者一块块的复制粘贴(类似 C D 两步)。范围如下图。

需用 FF 覆盖的字节范围,共 588 字节

完成之后保存,备用。现在我们已经得到了包含正确 slic 2.1 表的 BIOS 镜像,下面将其写入 BIOS 即可。

四. 将修改后的 BIOS 镜像写入 BIOS

这里使用联想提供的更新 BIOS 的工具来进行,只要没有修改错误,这一步是没什么危险的。

A. 准备工具

按照步骤 2 的提示,下载图片中显示的第一个软件 BIOS Update Bootable CD。这是光盘版 BIOS 升级工具,可直接用来启动计算机执行升级。我们需要用其中的 2 个文件:EFILDR16、PFLASH.EXE。

从 BIOS 升级光盘中提取所需文件

下载后使用 UltraISO 打开该镜像,并单击工具栏的 启动 ——> 保存引导文件,将保存的文件存为 a.bif。然后再解压这个 a.bif 文件,就能从其中 FLASH 文件夹里找到我们上面提到的两个文件:EFILDR16、PFLASH.EXE。

之所以从光盘中提取个文件还这么麻烦,是因为直接打开下载的 ISO 文件后,里面是空白的,看不到所需文件。

B. 制作 USB 启动盘以升级 BIOS

如果你手头上刚好有可以启动计算机的 U 盘,那就好办了,没有的话就参考这里的第2点使用 HP U盘格式化工具创建一个 MS-DOS 启动盘。

提示:

以上  A B 两步也可以合并为一步用另一种方法实现(但是我没用过),即,在电脑上插入一个空的 U 盘;用 UltraISO 打开下载的可启动光盘,然后单击 启动 ——> 写入硬盘镜像,制作出可启动的 U 盘,并且能够在启动后自动执行 BIOS 更新任务。但是为了写入我们修改后的 BIOS.rom,需要将上述文件放到 U 盘根目录,并删除 U 盘中的  FLASH 文件夹。未测试!

C. 更新 BIOS

  1. 将刚才的 2 个文件(EFILDR16、PFLASH.EXE)复制到这个启动 U 盘;
  2. 再在 U 盘里新建一个文本文件,写入
  3. 保存后将其改名为 update.bat
  4. 将第三步修改好的 BIOS.rom 文件复制到 U 盘;(共需要复制 4 个文件进去)
  5. 使用该 U 盘引导启动计算机(启动时按 F12 可选择启动位置为 U 盘);
  6. C:\> 命令提示符下输入 update.bat 并回车,然后等待 BIOS 更新完成。

更新时拍了张照片,如下:

U 盘更新 ThinkPad T420s BIOS 界面

五. 后记

1. 错了一次的地方

我曾经出错的地方在于修改 BIOS.rom 的时候把那几个区块的位置搞错了:将第二个以 83xxC4000100010003000000 开头的非 00 区块后面的 182 字节复制到了以 E3xxC4000100010003000000 开头的那个后面全是 FF 的区块,然后将本来的第二个以 83xxC4000100010003000000 开头的非 00 区块以 FF 填充。

未知的 slic 版本(工具:Everest)

这样做的结果就是启动后检测到的 BIOS 中 slic 版本为“未知”,如上图。幸好可以启动。此时,本来我使用软激活的 OEM Windows 7 提示需要立即激活我的 Windows。

 2. 如果是软激活的 Windows 7

如果本来安装的 Windows 7 是用的 OEM 软激活方式激活的,则需要重新使用 OEM 软件激活工具清除掉软激活信息才能看到真实的修改后的 BIOS 中的 slic 2.1 信息。

3. 关于激活 Windows 7

据说,修改为 slic 2.1 的 BIOS 之后并不能保证你就可以激活 Windows 7。因为必须是联想(或称 IBM) ThinkPad的 OEM 版本 Windows 7 才能激活,通常这种安装源都集成了 ThinkPad OEM 证书和序列号。

最起码,零售版(网上下载的,无合法序列号)的 Windows 7 仅仅依靠这个是没办法激活的。OEM 版的 Windows 7 应该很好找的吧。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/alter-thinkpad-t420s-bios-to-tp_8c-slic_2_1/>。转载请保留此信息及相应链接。

4 条关于 “成功修改港版联想 ThinkPad T420s BIOS 包含 TP-8C slic2.1” 的评论

  1. 没弄明白什么意思,在什么情况下需要这么做呀?
    我的t420在11年9月入手后用这个KEY:22TKD-F8XX6-YG69F-9M66D-PMJBM 激活后就成旗舰版了,到现在还能使用。

    • 这是为了安装 OEM 版的 Windows 7 系统 —— 不需要 KEY,弄好后跟原厂行货 ThinkPad 自带系统没区别。
      能用就好,等不能用的时候再考虑这个吧。我是为了安装 Windows 7 和 Linux 双启动菜单才不得不搞这个的。

  2. 博主你好,我的T420备份出来的BIOS,有C4000100010003000000,但是却没有信息,往下都是FF,能解决吗?

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)