BIOS Marker(LENOVO)研究专题
BIOS Marker(LENOVO)研究专题
本文由ZHAOLIANG大侠编写!
特点:
BIOS文件中有“$SLP”,
DOS下用 Phlash16 刷BIOS的同时,
加参数刷入 marker文件.
注意:仅用于试验环境的技术研究以及漏洞的验证。不涉及任何有版权的内容,仅供技术交流研究之用。
XR410&E290&E680 Marker 的分析:
【暂时称这种方式为硬MARKER】
在 SETMARK.BAT 批处理中:
phlash16 LE4_SLP2.wph /prot SLP:SLP2MARK.bin /X
分析如下:
phlash16 是 Phoenix 的 DOS 下刷BIOS的软件,
LE4_SLP2.wph 是 BIOS文件
/prot SLP: 是phlash16的参数,意思是在 “$SLP”的端口处写
SLP2MARK.bin 是SLIC表的marker部分
【SLIC表 = 24h 表头 + 9Ch PUBKey + B6h Marker 】
/X 是phlash16的参数,推测意思是 SLP2MARK.bin 不经过压缩直接写到BIOS中
那么,“$SLP”的端口在哪里呢?
很简单,在 BIOS 文件的 “尾部”里,你可以在BIOS文件中搜索“$SLP”,
以 LE4_SLP2.wph 为例:
(0~100000h 是 BIOS 文件,100000h~100D85h是BIOS的芯片刷新程序)
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00100540 00 00 00 00 00 00 00 00 00 00 00 24 50 52 4F 54 ...........$PROT
00100550 45 43 54 24 53 4C 50 4E 05 00 00 00 03 FA FF B6 ECT$SLPN.....??
00100560 00 00 00 FF FF FF FF 01 00 64 C7 06 4C 05 00 00 ...
$PROTECT 意思是“保护”,就是说“$PROTECT”后面的端口中指定位置,
在刷 BIOS 时,不会被刷新 !!!!!!!!!!!!!!!!
呵呵,就是说BIOS文件中包含的刷新程序设置了一段位置,这段位置在刷BIOS的时候,
是不会被刷新的,除非你加了那个端口的参数并指定文件,那里才能被刷新 !!!
这就是为什么同型号的笔记本,刷同样的BIOS,结果会不一样了 !!!
预装VISTA的BIOS,那个位置是 SLIC表的marker ,升级BIOS之后,那里位置没有被刷新,
SLIC表还在。
没有预装VISTA的BIOS,那个位置不是SLIC表的marker ,升级BIOS之后,那里位置没有被刷新,
你的BIOS就不会有SLIC表,即使有,marker部分也是错误的。
而使用上面的参数刷 BIOS 就不同了,指定的位置会被写成 SLIC表的marker !
$SLP 指定的端口 就是 $PROTECT
$SLP后面的代码分析:
4E 05 00 00 BIOS尾部的相对位置,就是把 10001Bh 当作 0h(1B是头部长度不计在内),
“54E” 就是$PROTECT 尾部的位置,本例是 100568h处,
(568h-1Bh+1=54Eh ,十六进制从0开始)
00 03 FA FF 指定端口的起始位置(BIOS 在内存中的地址),这里是 “FFFA0300”
在BIOS文件中的位置 A0300h
B6 00 00 00 指定的长度 B6h ,^_^ 正好是 SLIC表marker的长度 !
这下部分人已经明白了吧 !
总结:
联想的升级BIOS中,如果有 “$SLP”,那你就看看 “$SLP”所指定的位置,
例如本例中的 “FFFA0300”【用HWDIRECT1.87.00.8 看 】,
看看你的 BIOS 的 “FFFA0300”处是不是 SLIC表的marker,
如果是,你直接更新BIOS,那么你的 BIOS 还是会激活 VISTA ,
www.nx899.com
如果不是,你就用 SETMARK.BAT 更新BIOS,那么你的 BIOS 就有SLIC了,能激活 VISTA 。
但是要注意最好先看看你的 RSDT表的 OEMID 和 OEMTABLEID,然后选择一个匹配的SLIC文件。
当然,如果RSDT表的 OEMID 和 OEMTABLEID 不是 “LENOVOT” 或 “LENOVOC”开头的话,
就自己选个联想的 SLIC就行了。
F41 Marker 的分析:
【暂时称这种方式为软MARKER】
特点:
适合的BIOS文件的尾部(描述信息)没有“$SLP”,
BIOS 中已经有374字节的SLIC表了,(有可能没有Marker部分)
但是系统中没有SLIC表,或表名不对,或SLIC表不完整。
在纯DOS环境下,运行 MARKER.EXE 加参数,
即可控制 SLIC表的去留,不需要刷 BIOS。
联想 Marker 相关程序下载:
注意:
联想SMI_MARKER 必须在纯DOS下运行 !!!
而且最好不加载类似EMM386之类的内存管理程序。
联想Marker转码模拟程序,只是我做的模拟计算程序,并不能修改BIOS。
4820313a723341a6c2453e27aa7ba9f3.rar 4820313a723341a6c2453e27aa7ba9f3.rar (581.99 KB)
联想能用MARKER的BIOS初步推断:
XR410Marker 可能是刷BIOS时,把 marker 同时刷到BIOS中
F40 Marker 可能是改SMI信息,BIOS运行时读取SMI信息,
符合一定的条件 SLIC表就是正常的,没找到标记就把SLIC改成一半。其实就是刷HOLE。
随便找了几个版本的 BIOS 文件发现一些规律:
首先 SLIC表 = 24h 表头 + 9Ch PUBKey + B6h Marker
用 Phoenix BIOS Editor 打开BIOS文件,在 TEMP 目录
1、
winhex打开 BIOSCOD1.ROM ,搜索 SLIC ,
可以找到 SLIC表的表头部分(长度24h),如下:
53 4C 49 43 00 00 00 00 01 00 4F 45 4D SLIC......OEM
49 44 5F 4F 45 4D 54 41 42 4C 45 00 00 00 00 20 ID_OEMTABLE....
4C 54 50 00 00 00 00 LTP....
每个BIOS中的 SLIC 的 OEM ID&Table ID都是 "OEMID_OEMTABLE"
2、
TEMP 目录中有一个 ACPIX.ROM 或 MOD_XX00.ROM 文件 ,
文件大小是 156字节(9Ch),这个文件是 SLIC表的 PUBkey 部分,
每个BIOS的这个文件内容都完全一样,因为Key是通用的,
比较 LENOVOCB-01、LENOVOTC-2P、LENOVOTC-03、LENOVOTP-79的SLIC表,
发现他们的 PUBkey 部分是完全相同的
3、
TEMP 目录中有一个 HOLEX.ROM ,文件大小是 182字节(B6h),
但是这个文件的内容全部是 “FF”,
这个文件是 SLIC表的 Marker 部分,
比较 LENOVOCB-01、LENOVOTC-2P、LENOVOTC-03、LENOVOTP-79的SLIC表,
发现他们的 Marker 部分是不相同的(包括OEMID也是不同的)。
总结:
每个联想带SLIC的BIOS,
SLIC表头基本相同,只有Creator ID有可能不同,
(注:Creator ID不影响SLIC的功能)
SLIC表的 PUBkey 部分是完全相同的,
SLIC表的 Marker 部分是空的(182个HEX“FF”)。
seg000-E9A ; *************** S U B R O U T I N E ***************************************
seg000-E9A
seg000-E9A
seg000-E9A sub_DE9A proc near ; CODE XREF: seg000-E70p
seg000:DE9A push eax
seg000:DE9C push ecx
seg000:DE9E push edx
www.nx899.com
seg000:DEA0 push edi
seg000:DEA2 push esi
seg000:DEA4 push ds
seg000:DEA5 push es
seg000:DEA6 mov ecx, 0B6h ; '? ;
seg000:DEAC push 1
seg000:DEAE push large 0FFFFFFFFh
seg000:DEB4 push ecx
seg000:DEB6 push 0
seg000:DEB8 call far ptr 41A5h:485Dh
seg000:DEBD add sp, 0Ch
seg000:DEC0 shl edx, 10h
seg000:DEC4 mov dx, ax
seg000:DEC6 or edx, edx
seg000:DEC9 stc
seg000:DECA jz short loc_DF16
seg000:DECA
seg000:DECC xor ax, ax
seg000:DECE mov ds, ax
seg000:DED0 mov es, ax
seg000:DED2 mov esi, 0FFFB0000h
seg000:DED8 mov edi, edx
seg000:DEDB mov ecx, 0B6h ; '? ;
seg000:DEE1 cld
seg000:DEE2 rep movs byte ptr es:[edi], byte ptr [esi]
seg000:DEE5 mov esi, edx
seg000:DEE8 mov ecx, 0B6h ; '? ;
seg000:DEEE call far ptr 41A5h:2DB8h
seg000:DEF3 jb short loc_DF08
seg000:DEF3
seg000:DEF5 mov ecx, 0B6h ; '? ;
seg000:DEFB mov edi, ebx
seg000:DEFE sub edi, ecx
seg000:DF01 mov ebx, edi
seg000:DF04 rep movs byte ptr es:[edi], byte ptr [esi]
seg000:DF07 clc
seg000:DF07
seg000:DF08
seg000:DF08 loc_DF08: ; CODE XREF: sub_DE9A+59j
seg000:DF08 pushf
seg000:DF09 push edx
www.nx899.com
seg000:DF0B push 2
seg000:DF0D call far ptr 41A5h:485Dh
seg000:DF12 add sp, 6
seg000:DF15 popf
seg000:DF15
seg000:DF16
seg000:DF16 loc_DF16: ; CODE XREF: sub_DE9A+30j
seg000:DF16 pop es
seg000:DF17 pop ds
seg000:DF18 pop esi
seg000:DF1A pop edi
seg000:DF1C pop edx
seg000:DF1E pop ecx
seg000:DF20 pop eax
seg000:DF22 retn
seg000:DF22
seg000:DF22 sub_DE9A endp
seg000:DF22
seg000:DF23
seg000:DF23 ; *************** S U B R O U T I N E ***************************************
seg000:DF23
seg000:DF23
seg000:DF23 sub_DF23 proc near ; CODE XREF: seg000:DE75p
seg000:DF23 push ax
seg000:DF24 push edx
seg000:DF26 mov ax, 3
seg000:DF29 mov dx, 4Ah ; 'J' ;
seg000:DF2C shl dx, 8
seg000:DF2F call far ptr 0F000h:0E38Bh
seg000:DF34 jb short loc_DF5D
seg000:DF34
seg000:DF36 shl edx, 10h
seg000:DF3A mov dx, ax
seg000:DF3C cmp edx, 9Ch ; '? ;
seg000:DF43 stc
seg000:DF44 jnz short loc_DF5D
seg000:DF44
seg000:DF46 sub ebx, edx
seg000:DF49 mov ax, 4Ah ; 'J' ;
seg000:DF4C shl ax, 8
seg000:DF4F push ebx
seg000:DF51 push ax
seg000:DF52 push 5
seg000:DF54 call far ptr 0F000h-A75h
seg000:DF59 add sp, 8
seg000:DF5C clc
www.nx899.com
seg000:DF5C
seg000:DF5D
seg000:DF5D loc_DF5D: ; CODE XREF: sub_DF23+11j
seg000:DF5D ; sub_DF23+21j
seg000:DF5D pop edx
seg000:DF5F pop ax
seg000:DF60 retn
seg000:DF60
seg000:DF60 sub_DF23 endp
,BIOS Marker(LENOVO)研究专题
- ·上一篇:主板BIOS、CMOS及控制芯片知识
- ·下一篇:cbrom
《BIOS Marker(LENOVO)研究专题》相关文章
- › BIOS报警的声音的意思?
- › 主板BIOS功能
- › 浅谈主板BIOS
- › 开机自检测-BIOS提示信息解释
- › Bios Rom checksum error-System halted
- › BIOS被病毒破坏了怎么办?
- › 为什么要升级BIOS?如何更新BIOS?
- › 升级BIOS要注意哪些问题?
- › 能否在Windows下升级BIOS?
- › 升级Award BIOS时出现提示“Insufficient memory”
- › 12种BIOS报错信息及排除方法
- › BIOS芯片物理损坏的替代
- 在百度中搜索相关文章:BIOS Marker(LENOVO)研究专题
tag: 暂无联系方式 BIOS设置,bios设置图解教程,如何设置bios,bios怎么设置,电脑教程大全 - BIOS设置
BIOS设置 推荐
- · BIOS报警的声音的意思?
- · 主板BIOS功能
- · 浅谈主板BIOS
- · 开机自检测-BIOS提示信息解释
- · Bios Rom checksum error-System halted
- · BIOS被病毒破坏了怎么办?
- · 为什么要升级BIOS?如何更新BIOS?
- · 升级BIOS要注意哪些问题?
- · 能否在Windows下升级BIOS?
- · 升级Award BIOS时出现提示“Insufficient m
- · 12种BIOS报错信息及排除方法
- · BIOS芯片物理损坏的替代
- · 拯救BIOS刷新失败的电脑显卡
- · 电脑显卡BIOS刷新失败后的处理方法
- · [图解]BIOS里一些常用功能设置
- · 如何优化电脑系统的BIOS?
- · 给菜鸟提供的刷新BIOS教程[推荐]
- · 怎样升级主板上的 BIOS?
- · 主板 BIOS 升级失败后怎么办?
- · 为什么要升级主板上的 BIOS?