2024年1月9日发(作者:臧晴丽)
联想(IBM) PhoenixBIOS增加SLIC表修改全教程
(用来激活联想和IBM的VISTA)
作者:赵亮 论坛: 网名:zhaoliang Email:zhaoliang518@
欢迎转载,但请保留上面的信息,谢谢合作 !
IBM ThinkPad NoteBook 的BIOS一直没有人修改,原因有两点:
1,BIOS 文件是压缩过的,必须解压缩参能修改。
2,60以上系列的BIOS文件是2M以上的,最新版的Phoenix BIOS Editor220 编辑工具不支持2M以上的BIOS的修改。
下面以 ThinkPad X60S 为例讲解一下研究和修改过程:
1、下载ThinkPad X60, X60s 2.12版的升级BIOS官方BIOS,
ftp:///pc/pccbbs/mobiles/
附注:发现文件名的前两个字母“7B”就是RSDT的OEMTABLEID中的字符,
X60, X60s 的RSDT的OEMID+OEMTABLEID =“LENOVOTP-7B ”(后面是3个空格)
本文为了省略,提及“OEM信息”就是“OEM ID 和OEM TABLE ID”的意思。
2、解压缩 ,运行里面的 即可正常升级。
注意升级BIOS之前,一定要电池电量在 50% 以上,一定要插上电源适配器。
3、BIOS的解压缩,感谢远景的dimsage提供BIOS解压软件“e_”。
软件是dos的,可在MSDOS窗口中运行,命令如下:
e_bcpvpw $1
就是从$1文件解压出来的,我们可以修改文件了。
4、在网友iiair的配合测试下,逐步发现IBM ThinkPad NoteBook 的BIOS 的特点。
用Phoenix BIOS Editor220打开,会提示错误,如图:
到Phoenix BIOS Editor220 安装目录下的TEMP文件夹,这里是解压的所有模块,
注意 文件和文件,这两个文件是BIOS模块的配置和记录。
文件如下:(模块在BIOS文件中的位置是从下往上的)
- Generated by BIOS Editor
2097152 Bytes (Bank Layout = 2048KB x 1) BIOS是2MB的,多出的部分是描述信息(刷BIOS必用的)
MODULE NAME C I B START END SIZE LINK1 LINK2
------------ - -- - -------- -------- ----- -------- --------
I 0 0 FFFF8000 FFFFFFFF 08000 BIOS文件的最后64K(8000h)是启动模块
X 0 0 FF1E8353 FF1EFFEF 07C9D FFFE76A8
D 0 0 FF1E76A8 FF1E8352 00CAB FFFE725D
G 0 0 FF1E725D FF1E76A7 0044B FFFE620B
MOD_ V 0 0 FF1E620B FF1E725C 01052 FFFE616E
A 0 0 FF1E616E FF1E620A 0009D FFFE6120
A 1 0 FF1E6120 FF1E616D 0004E FFFE5F29
A 2 0 FF1E5F29 FF1E611F 001F7 FFFE5EC7
A 4 0 FF1E5EC7 FF1E5F28 00062 FFFE5E81
A 5 0 FF1E5E81 FF1E5EC6 00046 FFFE5E16
A 6 0 FF1E5E16 FF1E5E80 0006B FFFE5DC9
A 7 0 FF1E5DC9 FF1E5E15 0004D FFFE5D73
A 8 0 FF1E5D73 FF1E5DC8 00056 FFFE5CFA
ACPIX是ACPI表模块,ACPI模块后的数字都是按顺序排列的(注:中间不能有空,在其它位置),
本例最大如果加ACPI模块的话,必须是
L 1 0 FF1E5CFA FF1E5D72 00079 FFFE5C4D
L 2 0 FF1E5C4D FF1E5CF9 000AD FFFE5BBE
L 3 0 FF1E5BBE FF1E5C4C 0008F FFFE5B7B
L 4 0 FF1E5B7B FF1E5BBD 00043 FFFE5B3B
L 5 0 FF1E5B3B FF1E5B7A 00040 FFFE5AB8
L 6 0 FF1E5AB8 FF1E5B3A 00083 FFFE5A2C
L 7 0 FF1E5A2C FF1E5AB7 0008C FFFE59A0
L 8 0 FF1E59A0 FF1E5A2B 0008C FFFE5915
L 9 0 FF1E5915 FF1E599F 0008B FFFE588B
L 10 0 FF1E588B FF1E5914 0008A FFFE5856
L 11 0 FF1E5856 FF1E588A 00035 FFFE57F9
L 12 0 FF1E57F9 FF1E5855 0005D FFFE50E3
L 13 0 FF1E50E3 FF1E57F8 00716 FFFE50A0
MOD_ * 0 0 FF1E50A0 FF1E50E2 00043 FFFE5050 重要,HOLE模块的设置信息,位置和大小
B 0 0 FF1E5050 FF1E509F 00050 FFFE0005 FFFB00C0
" . . . FFFB00C0 FFFB0170 000B1 FFF68ACA
" . . . FFF68ACA FFF6E188 056BF
“” 被分割成3段了,也有可能是其它模块,出现上面的情况原因是HOLE的位置是固定的,
模块写到HOLE的位置,只能跳过。也可以理解为模块被HOLE隔断了。
X 1 0 FF1E0005 FF1E504F 0504B FFFDC08D
S 0 0 FF1DC08D FF1E0004 03F78 FFFCC865
C 0 0 FF1CC865 FF1DC07F 0F81B FFFC31B4
R 0 0 FF1C31B4 FF1CC864 096B1 FFFBE9E2
R 1 0 FF1BE9E2 FF1C31B3 047D2 FFFBABCB
R 2 0 FF1BABCB FF1BE9E1 03E17 FFFB6168
E 0 0 FF1B6168 FF1BABCA 04A63 FFFB24AD
T 0 0 FF1B24AD FF1B6167 03CBB FFFB20F3
L 14 0 FF1B20F3 FF1B24AC 003BA FFFB175E
L 15 0 FF1B175E FF1B20F2 00995 FFFB1259
L 16 0 FF1B1259 FF1B175D 00505 FFFB0B1E
L 17 0 FF1B0B1E FF1B1258 0073B FFFB0454
L 18 0 FF1B0454 FF1B0B1D 006CA FFFB0256
MOD_ < 0 0 FF1B0256 FF1B0453 001FE FFFB0171
MOD_ J 0 0 FF1B0171 FF1B0255 000E5 FFFA7523 SLIC表的PUBKEY部分,被BIOS屏蔽了
M 0 0 FF1A7523 FF1AFFFF 08ADD FFF977B2
MOD_ Q 0 0 FF1977B2 FF1A7522 0FD71 FFF928EF
A 3 0 FF1928EF FF1977B1 04EC3 FFF900D4
注意看 ! 的位置,并没有和其它ACPI模块在一起,说明ACPI模块的位置没有必要按顺序排列 !!!
L 0 0 FF1900D4 FF190131 0005E FFF8FAA7
L 19 0 FF18FAA7 FF1900D3 0062D FFF8B8DF
MOD_ H 0 0 FF18B8DF FF18FAA6 041C8 FFF7B8C4
MOD_ / 0 0 FF17B8C4 FF18B8DE 1001B FFF758A9
MOD_ . 0 0 FF1758A9 FF17ACC3 0541B FFF75617
MOD_ F 0 0 FF175617 FF1758A8 00292 FFF735FC
MOD_ - 0 0 FF1735FC FF175188 01B8D FFF72AEB
MOD_ , 0 0 FF172AEB FF1735FB 00B11 FFF6E3B2
MOD_ K 0 0 FF16E3B2 FF172AEA 04739 FFF6E189
MOD_ K 1 0 FF16E189 FF16E3B1 00229 FFF5E2AE
B 1 0 FF15E2AE FF168AC9 0A81C FFF542E5
ACPI表加载的代码,一般都在 模块中,其中发现SLIC表的判断代码,不符合条件就不加载SLIC表
B 2 0 FF1542E5 FF15E2AD 09FC9 FFF4C4F5
B 3 0 FF14C4F5 FF1542E4 07DF0 FFF4A619
大部分的IBM的BIOS,ACPI表的 OEMID和OEMTABLEID 都被一段代码修改了,这段代码就在模块中,
不管原来的OEMID和OEMTABLEID 是什么,都将替换成为 中开头的 OEMID和OEMTABLEID,
本例:“LENOVOTP-7B ”
B 4 0 FF14A619 FF14C4F4 01EDC FFF42090
B 5 0 FF142090 FF14A618 08589 FFF402CB
B 6 0 FF1402CB FF14208F 01DC5 FFF20000
原来的BIOS,模块到之后,直接指向 FFF20000 ,FF1402CB 上面还有空位(注:不在HOLE的范围)
所以在上面空位上加上 ,修改 的指向为 ,
下面是改后的//////////////////////////////////////////////////////////////////////
B 6 0 FF1402CB FF14208F 01DC5 FFF4013A
A 9 0 FF14013A FF1402CA 00191 FFF20000
注:是我加进去的。 的指向为 FFF4013A ,就是新加的的位置,
又指向 FFF20000 ,这样,就是在 和MOD_ 中间插入一个
上面是改后的/////////////////////////////////////////////////////////////////////
MOD_ ? 0 0 FF120000 FF121D6A 01D6B FFFFFFF0
-------------------------------------------------------------
Flash Storage Information
-------------------------------------------------------------
ESCD FFE00000 FFE01FFF 02000
-------------------------------------------------------------
Fixed Location Modules Information
-------------------------------------------------------------
FFF10000 FFF1FFFF 10000
FFE02000 FFE2FFFF 2E000
看了一下MOD_,如下:
蓝色标识的概念还不清楚,暂且认为是HOLE的类型吧,20似乎是非压缩,
红色标识是HOLE的起始位置,淡紫色标识是HOLE的长度,
例如:00 00 F1 FF 00 00 01 00 ==〉FFF10000 10000
补齐HOLE信息如下:
FFF10000 FFF1FFFF 10000
FFF20000 FFF21FFF 2000
FFE02000 FFE2FFFF 2E000
FFFB0000 FFFB00DF C0
注意,就是预装VISTA的BIOS中SLIC表MARKER的位置,只是被加密和转码了
目前还没找到加密和转码的规律。所以还不能完美修改BIOS。
参考 用WINHEX看了一下,可以看出BIOS的大部分模块还是在后 1M里,Phoenix BIOS Editor220基本能释放大部分的模块,只有HOLE模块释放不正常。于是我把2M 的BIOS用winhex去掉一些内容,改成1M 的BIOS,不断的修改,发现了修改方法。
5、因为要手动修改BIOS,所以改动越少越简单,那么首先考虑OEMID和TABLEID,
因为RSDT、XSDT、SLIC 的 OEMID和TABLEID必须一致才行,
winhex打开文件,搜索 RSDT,如图:
看到的RSDT和XSDT的OEM信息和我们实际在WINDOWS系统中看到的不一样,
实际是“LENOVOTP-7B ”,所以在所有模块中找“LENOVOTP-7B ”,
在“”的开头位置,发现了“LENOVOTP-7B ”,
编译“”,发现有代码会修改所有ACPI表的OEM信息为“LENOVOTP-7B ”,
如果我们要修改“LENOVOTP-7B ”,那么“”模块的大小就有可能变化,
这样改BIOS太麻烦,怎么办?iiair从预装VISTA的X60KFC上备份出OEM信息为“LENOVOTP-7B ”的SLIC表,这样SLIC表的OEM信息就和 RSDT、XSDT的信息一致了,
我们就不需要改BIOSCODE3模块了。
6、制作ACPI模块,在官方的程序中,复制、 、到一个新的文件夹,改名为、,修改的内容如下:
prepare
用文本文件打开文件,修改内容如下:
COMPRESS NONE
ACPI
把OEM信息为“LENOVOTP-7B ”的SLIC表也复制到这里,执行,
得到非压缩的模块文件。
7、winhex打开,按照中的位置找到的位置,
A 8 0 FF1E5D73 FF1E5DC8 00056 FFFE5CFA
FF1E5D73在BIOS文件中的位置是1E5D73 ,如图:
哈哈,的前四个字节(红色标识)是“FFFE5CFA”,就是下一个模块的位置,
的第八个字节(蓝色标识)是“08”,就是ACPI表的数字标识。
winhex打开文件:
根据上面ACPI8 模块的定义,修改第8个字节为“09”,这个模块就变成“ACPI9”了,
ACPI9模块的长度是 191h
8、winhex打开,按照中的位置找到的位置,
B 6 0 FF1402CB FF14208F 01DC5 FFF4013A
FF1402CB在BIOS文件中的位置是1402CB ,如图:
我们看到上面的191h是空的,而且范围不在任何其他模块和HOLE中,
所以我确认这是可用空间,所以把的内容复制(CTRL+C)并覆盖(CTRL+B)到BIOS中的14013Ah处,如图:
首先修改14013Ah处,改为下一个模块的位置“FFF20000”,如图:
再修改1402CBh处,改为下一个模块ACPI9的位置14013Ah 如图:
保存修改,所有修改过程结束,是不是很简单 !
复杂的部分:
1、 分析 和 MOD_,找到可用空间
2、 加入ACPI模块后,计算和修改位置,这个容易出错,必须理解BIOS和内存的关系
附录:
一、BIOS文件的位置和内存位置的对应关系:
BIOS位置转内存地址,计算很简单,
前两个字节00 → FF
第3个字节 0 → E 1 → F
后5个字节不变
二、SLIC表是手动加上去的,当你再次升级BIOS时,SLIC表就没有了,需要再次破解
三、刷破解BIOS的方法:
把制作好的带 SLIC 的 BIOS 文件放到官方BIOS文件夹里面,打开 文件,找到 UpdateMode= 那行,修改为 UpdateMode=0 保存,运行 ,
点“Browse”选择“”,点“FlashBIOS”升级BIOS,如图:
升级成功并重新启动计算机以后,用 EVEREST 或 ACPIScope 查看,ACPI表已经有了。
你可以安装联想和IBM的任意版 Vista ,都可以成活成功。
注意,由于是破解的BIOS,刷BIOS也是强制刷的,所以有很大的风险 ! ! !
本文只是提供修改Phoenix BIOS的一种新的思路和方法。
笔记本很贵,不要轻易尝试刷破解的BIOS。
本人不对刷BIOS造成的任何损失负责。
2024年1月9日发(作者:臧晴丽)
联想(IBM) PhoenixBIOS增加SLIC表修改全教程
(用来激活联想和IBM的VISTA)
作者:赵亮 论坛: 网名:zhaoliang Email:zhaoliang518@
欢迎转载,但请保留上面的信息,谢谢合作 !
IBM ThinkPad NoteBook 的BIOS一直没有人修改,原因有两点:
1,BIOS 文件是压缩过的,必须解压缩参能修改。
2,60以上系列的BIOS文件是2M以上的,最新版的Phoenix BIOS Editor220 编辑工具不支持2M以上的BIOS的修改。
下面以 ThinkPad X60S 为例讲解一下研究和修改过程:
1、下载ThinkPad X60, X60s 2.12版的升级BIOS官方BIOS,
ftp:///pc/pccbbs/mobiles/
附注:发现文件名的前两个字母“7B”就是RSDT的OEMTABLEID中的字符,
X60, X60s 的RSDT的OEMID+OEMTABLEID =“LENOVOTP-7B ”(后面是3个空格)
本文为了省略,提及“OEM信息”就是“OEM ID 和OEM TABLE ID”的意思。
2、解压缩 ,运行里面的 即可正常升级。
注意升级BIOS之前,一定要电池电量在 50% 以上,一定要插上电源适配器。
3、BIOS的解压缩,感谢远景的dimsage提供BIOS解压软件“e_”。
软件是dos的,可在MSDOS窗口中运行,命令如下:
e_bcpvpw $1
就是从$1文件解压出来的,我们可以修改文件了。
4、在网友iiair的配合测试下,逐步发现IBM ThinkPad NoteBook 的BIOS 的特点。
用Phoenix BIOS Editor220打开,会提示错误,如图:
到Phoenix BIOS Editor220 安装目录下的TEMP文件夹,这里是解压的所有模块,
注意 文件和文件,这两个文件是BIOS模块的配置和记录。
文件如下:(模块在BIOS文件中的位置是从下往上的)
- Generated by BIOS Editor
2097152 Bytes (Bank Layout = 2048KB x 1) BIOS是2MB的,多出的部分是描述信息(刷BIOS必用的)
MODULE NAME C I B START END SIZE LINK1 LINK2
------------ - -- - -------- -------- ----- -------- --------
I 0 0 FFFF8000 FFFFFFFF 08000 BIOS文件的最后64K(8000h)是启动模块
X 0 0 FF1E8353 FF1EFFEF 07C9D FFFE76A8
D 0 0 FF1E76A8 FF1E8352 00CAB FFFE725D
G 0 0 FF1E725D FF1E76A7 0044B FFFE620B
MOD_ V 0 0 FF1E620B FF1E725C 01052 FFFE616E
A 0 0 FF1E616E FF1E620A 0009D FFFE6120
A 1 0 FF1E6120 FF1E616D 0004E FFFE5F29
A 2 0 FF1E5F29 FF1E611F 001F7 FFFE5EC7
A 4 0 FF1E5EC7 FF1E5F28 00062 FFFE5E81
A 5 0 FF1E5E81 FF1E5EC6 00046 FFFE5E16
A 6 0 FF1E5E16 FF1E5E80 0006B FFFE5DC9
A 7 0 FF1E5DC9 FF1E5E15 0004D FFFE5D73
A 8 0 FF1E5D73 FF1E5DC8 00056 FFFE5CFA
ACPIX是ACPI表模块,ACPI模块后的数字都是按顺序排列的(注:中间不能有空,在其它位置),
本例最大如果加ACPI模块的话,必须是
L 1 0 FF1E5CFA FF1E5D72 00079 FFFE5C4D
L 2 0 FF1E5C4D FF1E5CF9 000AD FFFE5BBE
L 3 0 FF1E5BBE FF1E5C4C 0008F FFFE5B7B
L 4 0 FF1E5B7B FF1E5BBD 00043 FFFE5B3B
L 5 0 FF1E5B3B FF1E5B7A 00040 FFFE5AB8
L 6 0 FF1E5AB8 FF1E5B3A 00083 FFFE5A2C
L 7 0 FF1E5A2C FF1E5AB7 0008C FFFE59A0
L 8 0 FF1E59A0 FF1E5A2B 0008C FFFE5915
L 9 0 FF1E5915 FF1E599F 0008B FFFE588B
L 10 0 FF1E588B FF1E5914 0008A FFFE5856
L 11 0 FF1E5856 FF1E588A 00035 FFFE57F9
L 12 0 FF1E57F9 FF1E5855 0005D FFFE50E3
L 13 0 FF1E50E3 FF1E57F8 00716 FFFE50A0
MOD_ * 0 0 FF1E50A0 FF1E50E2 00043 FFFE5050 重要,HOLE模块的设置信息,位置和大小
B 0 0 FF1E5050 FF1E509F 00050 FFFE0005 FFFB00C0
" . . . FFFB00C0 FFFB0170 000B1 FFF68ACA
" . . . FFF68ACA FFF6E188 056BF
“” 被分割成3段了,也有可能是其它模块,出现上面的情况原因是HOLE的位置是固定的,
模块写到HOLE的位置,只能跳过。也可以理解为模块被HOLE隔断了。
X 1 0 FF1E0005 FF1E504F 0504B FFFDC08D
S 0 0 FF1DC08D FF1E0004 03F78 FFFCC865
C 0 0 FF1CC865 FF1DC07F 0F81B FFFC31B4
R 0 0 FF1C31B4 FF1CC864 096B1 FFFBE9E2
R 1 0 FF1BE9E2 FF1C31B3 047D2 FFFBABCB
R 2 0 FF1BABCB FF1BE9E1 03E17 FFFB6168
E 0 0 FF1B6168 FF1BABCA 04A63 FFFB24AD
T 0 0 FF1B24AD FF1B6167 03CBB FFFB20F3
L 14 0 FF1B20F3 FF1B24AC 003BA FFFB175E
L 15 0 FF1B175E FF1B20F2 00995 FFFB1259
L 16 0 FF1B1259 FF1B175D 00505 FFFB0B1E
L 17 0 FF1B0B1E FF1B1258 0073B FFFB0454
L 18 0 FF1B0454 FF1B0B1D 006CA FFFB0256
MOD_ < 0 0 FF1B0256 FF1B0453 001FE FFFB0171
MOD_ J 0 0 FF1B0171 FF1B0255 000E5 FFFA7523 SLIC表的PUBKEY部分,被BIOS屏蔽了
M 0 0 FF1A7523 FF1AFFFF 08ADD FFF977B2
MOD_ Q 0 0 FF1977B2 FF1A7522 0FD71 FFF928EF
A 3 0 FF1928EF FF1977B1 04EC3 FFF900D4
注意看 ! 的位置,并没有和其它ACPI模块在一起,说明ACPI模块的位置没有必要按顺序排列 !!!
L 0 0 FF1900D4 FF190131 0005E FFF8FAA7
L 19 0 FF18FAA7 FF1900D3 0062D FFF8B8DF
MOD_ H 0 0 FF18B8DF FF18FAA6 041C8 FFF7B8C4
MOD_ / 0 0 FF17B8C4 FF18B8DE 1001B FFF758A9
MOD_ . 0 0 FF1758A9 FF17ACC3 0541B FFF75617
MOD_ F 0 0 FF175617 FF1758A8 00292 FFF735FC
MOD_ - 0 0 FF1735FC FF175188 01B8D FFF72AEB
MOD_ , 0 0 FF172AEB FF1735FB 00B11 FFF6E3B2
MOD_ K 0 0 FF16E3B2 FF172AEA 04739 FFF6E189
MOD_ K 1 0 FF16E189 FF16E3B1 00229 FFF5E2AE
B 1 0 FF15E2AE FF168AC9 0A81C FFF542E5
ACPI表加载的代码,一般都在 模块中,其中发现SLIC表的判断代码,不符合条件就不加载SLIC表
B 2 0 FF1542E5 FF15E2AD 09FC9 FFF4C4F5
B 3 0 FF14C4F5 FF1542E4 07DF0 FFF4A619
大部分的IBM的BIOS,ACPI表的 OEMID和OEMTABLEID 都被一段代码修改了,这段代码就在模块中,
不管原来的OEMID和OEMTABLEID 是什么,都将替换成为 中开头的 OEMID和OEMTABLEID,
本例:“LENOVOTP-7B ”
B 4 0 FF14A619 FF14C4F4 01EDC FFF42090
B 5 0 FF142090 FF14A618 08589 FFF402CB
B 6 0 FF1402CB FF14208F 01DC5 FFF20000
原来的BIOS,模块到之后,直接指向 FFF20000 ,FF1402CB 上面还有空位(注:不在HOLE的范围)
所以在上面空位上加上 ,修改 的指向为 ,
下面是改后的//////////////////////////////////////////////////////////////////////
B 6 0 FF1402CB FF14208F 01DC5 FFF4013A
A 9 0 FF14013A FF1402CA 00191 FFF20000
注:是我加进去的。 的指向为 FFF4013A ,就是新加的的位置,
又指向 FFF20000 ,这样,就是在 和MOD_ 中间插入一个
上面是改后的/////////////////////////////////////////////////////////////////////
MOD_ ? 0 0 FF120000 FF121D6A 01D6B FFFFFFF0
-------------------------------------------------------------
Flash Storage Information
-------------------------------------------------------------
ESCD FFE00000 FFE01FFF 02000
-------------------------------------------------------------
Fixed Location Modules Information
-------------------------------------------------------------
FFF10000 FFF1FFFF 10000
FFE02000 FFE2FFFF 2E000
看了一下MOD_,如下:
蓝色标识的概念还不清楚,暂且认为是HOLE的类型吧,20似乎是非压缩,
红色标识是HOLE的起始位置,淡紫色标识是HOLE的长度,
例如:00 00 F1 FF 00 00 01 00 ==〉FFF10000 10000
补齐HOLE信息如下:
FFF10000 FFF1FFFF 10000
FFF20000 FFF21FFF 2000
FFE02000 FFE2FFFF 2E000
FFFB0000 FFFB00DF C0
注意,就是预装VISTA的BIOS中SLIC表MARKER的位置,只是被加密和转码了
目前还没找到加密和转码的规律。所以还不能完美修改BIOS。
参考 用WINHEX看了一下,可以看出BIOS的大部分模块还是在后 1M里,Phoenix BIOS Editor220基本能释放大部分的模块,只有HOLE模块释放不正常。于是我把2M 的BIOS用winhex去掉一些内容,改成1M 的BIOS,不断的修改,发现了修改方法。
5、因为要手动修改BIOS,所以改动越少越简单,那么首先考虑OEMID和TABLEID,
因为RSDT、XSDT、SLIC 的 OEMID和TABLEID必须一致才行,
winhex打开文件,搜索 RSDT,如图:
看到的RSDT和XSDT的OEM信息和我们实际在WINDOWS系统中看到的不一样,
实际是“LENOVOTP-7B ”,所以在所有模块中找“LENOVOTP-7B ”,
在“”的开头位置,发现了“LENOVOTP-7B ”,
编译“”,发现有代码会修改所有ACPI表的OEM信息为“LENOVOTP-7B ”,
如果我们要修改“LENOVOTP-7B ”,那么“”模块的大小就有可能变化,
这样改BIOS太麻烦,怎么办?iiair从预装VISTA的X60KFC上备份出OEM信息为“LENOVOTP-7B ”的SLIC表,这样SLIC表的OEM信息就和 RSDT、XSDT的信息一致了,
我们就不需要改BIOSCODE3模块了。
6、制作ACPI模块,在官方的程序中,复制、 、到一个新的文件夹,改名为、,修改的内容如下:
prepare
用文本文件打开文件,修改内容如下:
COMPRESS NONE
ACPI
把OEM信息为“LENOVOTP-7B ”的SLIC表也复制到这里,执行,
得到非压缩的模块文件。
7、winhex打开,按照中的位置找到的位置,
A 8 0 FF1E5D73 FF1E5DC8 00056 FFFE5CFA
FF1E5D73在BIOS文件中的位置是1E5D73 ,如图:
哈哈,的前四个字节(红色标识)是“FFFE5CFA”,就是下一个模块的位置,
的第八个字节(蓝色标识)是“08”,就是ACPI表的数字标识。
winhex打开文件:
根据上面ACPI8 模块的定义,修改第8个字节为“09”,这个模块就变成“ACPI9”了,
ACPI9模块的长度是 191h
8、winhex打开,按照中的位置找到的位置,
B 6 0 FF1402CB FF14208F 01DC5 FFF4013A
FF1402CB在BIOS文件中的位置是1402CB ,如图:
我们看到上面的191h是空的,而且范围不在任何其他模块和HOLE中,
所以我确认这是可用空间,所以把的内容复制(CTRL+C)并覆盖(CTRL+B)到BIOS中的14013Ah处,如图:
首先修改14013Ah处,改为下一个模块的位置“FFF20000”,如图:
再修改1402CBh处,改为下一个模块ACPI9的位置14013Ah 如图:
保存修改,所有修改过程结束,是不是很简单 !
复杂的部分:
1、 分析 和 MOD_,找到可用空间
2、 加入ACPI模块后,计算和修改位置,这个容易出错,必须理解BIOS和内存的关系
附录:
一、BIOS文件的位置和内存位置的对应关系:
BIOS位置转内存地址,计算很简单,
前两个字节00 → FF
第3个字节 0 → E 1 → F
后5个字节不变
二、SLIC表是手动加上去的,当你再次升级BIOS时,SLIC表就没有了,需要再次破解
三、刷破解BIOS的方法:
把制作好的带 SLIC 的 BIOS 文件放到官方BIOS文件夹里面,打开 文件,找到 UpdateMode= 那行,修改为 UpdateMode=0 保存,运行 ,
点“Browse”选择“”,点“FlashBIOS”升级BIOS,如图:
升级成功并重新启动计算机以后,用 EVEREST 或 ACPIScope 查看,ACPI表已经有了。
你可以安装联想和IBM的任意版 Vista ,都可以成活成功。
注意,由于是破解的BIOS,刷BIOS也是强制刷的,所以有很大的风险 ! ! !
本文只是提供修改Phoenix BIOS的一种新的思路和方法。
笔记本很贵,不要轻易尝试刷破解的BIOS。
本人不对刷BIOS造成的任何损失负责。