BIOS文件结构概述.docx
- 文档编号:9332062
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:7
- 大小:17.19KB
BIOS文件结构概述.docx
《BIOS文件结构概述.docx》由会员分享,可在线阅读,更多相关《BIOS文件结构概述.docx(7页珍藏版)》请在冰豆网上搜索。
BIOS文件结构概述
BIOS文件结构概述
在SETMARK.BAT批处理中:
phlash16LE4_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表头+9ChPUBKey+B6hMarker】
/X是phlash16的参数,推测意思是SLP2MARK.bin不经过压缩直接写到BIOS中
那么,“$SLP”的端口在哪里呢?
很简单,在BIOS文件的“尾部”里,你可以在BIOS文件中搜索“$SLP”,
以LE4_SLP2.wph为例:
(0~100000h是BIOS文件,100000h~100D85h是BIOS的芯片刷新程序)
Offset0123456789ABCDEF
0010054000000000000000000000002450524F54...........$PROT
0010055045435424534C504E0500000003FAFFB6ECT$SLPN.....?
?
00100560000000FFFFFFFF010064C7064C050000...
$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后面的代码分析:
4E050000BIOS尾部的相对位置,就是把10001Bh当作0h(1B是头部长度不计在内),
“54E”就是$PROTECT尾部的位置,本例是100568h处,
(568h-1Bh+1=54Eh,十六进制从0开始)
0003FAFF指定端口的起始位置(BIOS在内存中的地址),这里是“FFFA0300”
在BIOS文件中的位置A0300h
B6000000指定的长度B6h,^_^正好是SLIC表marker的长度!
这下部分人已经明白了吧!
总结:
联想的升级BIOS中,如果有“$SLP”,那你就看看“$SLP”所指定的位置,
例如本例中的“FFFA0300”【用HWDIRECT1.87.00.8看】,
看看你的BIOS的“FFFA0300”处是不是SLIC表的marker,
如果是,你直接更新BIOS,那么你的BIOS还是会激活VISTA,
如果不是,你就用SETMARK.BAT更新BIOS,那么你的BIOS就有SLIC了,能激活VISTA。
但是要注意最好先看看你的RSDT表的OEMID和OEMTABLEID,然后选择一个匹配的SLIC文件。
当然,如果RSDT表的OEMID和OEMTABLEID不是“LENOVOT”或“LENOVOC”开头的话,
就自己选个联想的SLIC就行了。
F41Marker的分析:
【暂时称这种方式为软MARKER】
特点:
适合的BIOS文件的尾部(描述信息)没有“$SLP”,
BIOS中已经有374字节的SLIC表了,(有可能没有Marker部分)
但是系统中没有SLIC表,或表名不对,或SLIC表不完整。
在纯DOS环境下,运行MARKER.EXE加参数,
即可控制SLIC表的去留,不需要刷BIOS。
联想Marker相关程序下载:
注意:
联想SMI_MARKER必须在纯DOS下运行!
!
!
而且最好不加载类似EMM386之类的内存管理程序。
联想Marker转码模拟程序,只是我做的模拟计算程序,并不能修改BIOS。
4820313a723341a6c2453e27aa7ba9f3.rar4820313a723341a6c2453e27aa7ba9f3.rar(581.99KB)
联想能用MARKER的BIOS初步推断:
XR410Marker可能是刷BIOS时,把marker同时刷到BIOS中
F40Marker可能是改SMI信息,BIOS运行时读取SMI信息,
符合一定的条件SLIC表就是正常的,没找到标记就把SLIC改成一半。
其实就是刷HOLE。
随便找了几个版本的BIOS文件发现一些规律:
首先SLIC表=24h表头+9ChPUBKey+B6hMarker
用PhoenixBIOSEditor打开BIOS文件,在TEMP目录
1、
winhex打开BIOSCOD1.ROM,搜索SLIC,
可以找到SLIC表的表头部分(长度24h),如下:
534C49430000000001004F454DSLIC......OEM
49445F4F454D5441424C450000000020ID_OEMTABLE....
4C545000000000LTP....
每个BIOS中的SLIC的OEMID&TableID都是"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表头基本相同,只有CreatorID有可能不同,
(注:
CreatorID不影响SLIC的功能)
SLIC表的PUBkey部分是完全相同的,
SLIC表的Marker部分是空的(182个HEX“FF”)。
seg000-E9A;***************SUBROUTINE***************************************
seg000-E9A
seg000-E9A
seg000-E9Asub_DE9Aprocnear;CODEXREF:
seg000-E70p
seg000:
DE9Apusheax
seg000:
DE9Cpushecx
seg000:
DE9Epushedx
seg000:
DEA0pushedi
seg000:
DEA2pushesi
seg000:
DEA4pushds
seg000:
DEA5pushes
seg000:
DEA6movecx,0B6h;'?
;
seg000:
DEACpush1
seg000:
DEAEpushlarge0FFFFFFFFh
seg000:
DEB4pushecx
seg000:
DEB6push0
seg000:
DEB8callfarptr41A5h:
485Dh
seg000:
DEBDaddsp,0Ch
seg000:
DEC0shledx,10h
seg000:
DEC4movdx,ax
seg000:
DEC6oredx,edx
seg000:
DEC9stc
seg000:
DECAjzshortloc_DF16
seg000:
DECA
seg000:
DECCxorax,ax
seg000:
DECEmovds,ax
seg000:
DED0moves,ax
seg000:
DED2movesi,0FFFB0000h
seg000:
DED8movedi,edx
seg000:
DEDBmovecx,0B6h;'?
;
seg000:
DEE1cld
seg000:
DEE2repmovsbyteptres:
[edi],byteptr[esi]
seg000:
DEE5movesi,edx
seg000:
DEE8movecx,0B6h;'?
;
seg000:
DEEEcallfarptr41A5h:
2DB8h
seg000:
DEF3jbshortloc_DF08
seg000:
DEF3
seg000:
DEF5movecx,0B6h;'?
;
seg000:
DEFBmovedi,ebx
seg000:
DEFEsubedi,ecx
seg000:
DF01movebx,edi
seg000:
DF04repmovsbyteptres:
[edi],byteptr[esi]
seg000:
DF07clc
seg000:
DF07
seg000:
DF08
seg000:
DF08loc_DF08:
;CODEXREF:
sub_DE9A+59j
seg000:
DF08pushf
seg000:
DF09pushedx
seg000:
DF0Bpush2
seg000:
DF0Dcallfarptr41A5h:
485Dh
seg000:
DF12addsp,6
seg000:
DF15popf
seg000:
DF15
seg000:
DF16
seg000:
DF16loc_DF16:
;CODEXREF:
sub_DE9A+30j
seg000:
DF16popes
seg000:
DF17popds
seg000:
DF18popesi
seg000:
DF1Apopedi
seg000:
DF1Cpopedx
seg000:
DF1Epopecx
seg000:
DF20popeax
seg000:
DF22retn
seg000:
DF22
seg000:
DF22sub_DE9Aendp
seg000:
DF22
seg000:
DF23
seg000:
DF23;***************SUBROUTINE***************************************
seg000:
DF23
seg000:
DF23
seg000:
DF23sub_DF23procnear;CODEXREF:
seg000:
DE75p
seg000:
DF23pushax
seg000:
DF24pushedx
seg000:
DF26movax,3
seg000:
DF29movdx,4Ah;'J';
seg000:
DF2Cshldx,8
seg000:
DF2Fcallfarptr0F000h:
0E38Bh
seg000:
DF34jbshortloc_DF5D
seg000:
DF34
seg000:
DF36shledx,10h
seg000:
DF3Amovdx,ax
seg000:
DF3Ccmpedx,9Ch;'?
;
seg000:
DF43stc
seg000:
DF44jnzshortloc_DF5D
seg000:
DF44
seg000:
DF46subebx,edx
seg000:
DF49movax,4Ah;'J';
seg000:
DF4Cshlax,8
seg000:
DF4Fpushebx
seg000:
DF51pushax
seg000:
DF52push5
seg000:
DF54callfarptr0F000h-A75h
seg000:
DF59addsp,8
seg000:
DF5Cclc
seg000:
DF5C
seg000:
DF5D
seg000:
DF5Dloc_DF5D:
;CODEXREF:
sub_DF23+11j
seg000:
DF5D;sub_DF23+21j
seg000:
DF5Dpopedx
seg000:
DF5Fpopax
seg000:
DF60retn
seg000:
DF60
seg000:
DF60sub_DF23endp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BIOS 文件 结构 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)