2009年11月

软件大小:851 KB
软件语言:英文
运行环境:Win2K/XP/2K3/Vista/2K8/7

   (需安装Microsoft .NET Framework 2.0或以上版)

软件授权:免费软件
更新时间:2009-11-26

软件简介:
  AwardTool是一款针对Award的修改软件,它采用ISA/Pubkey/超
静3/动态/0+2/OEM7等若干方法来完成BIOS中嵌入SLIC表以及SLP字
串的处理。
  AwardTool.exe为英文原版;AwardTool_sp.exe为特别版。

对于有MINIT、HTINIT、1PE32、1PE32B、2PE32、2PE32B模块的BIOS,在MODBIN6.EXE不支持、CBROM32又不能修改的System BIOS模块的情况下,想手工修改ORIGINAL.BIN主文件是件很麻烦棘手的事,而AwardTool.exe却可以很完美的将修改好的ORIGINAL.BIN主文件重新打包回BIOS,但遗憾的是这个过程是全自动完成的。有时想对ORIGINAL.BIN主文件稍作些修改再打包回BIOS却也无能为力,为了充分利用AwardTool.exe的功能为我们更好的办事,才特意反编译AwardTool.exe(希望作者谅解,一切都是为了更好的DIY),修改其流程将原来的写出MAIN.BIN和ACPI.BIN改为读取MAIN_MOD.BIN和ACPI_MOD.BIN,所以在AwardTool_sp.exe修改过程中必须要有MAIN_MOD.BIN和ACPI_MOD.BIN这两个文件同在目录下,AwardTool_sp.exe是通过读取目录下的MAIN_MOD.BIN和ACPI_MOD.BIN来完成修改替换BIOS的。MAIN_MOD.BIN相当于MODBIN6.EXE解压产生的ORIGINAL.BIN主文件或AwardTool.exe修改后保存的MAIN.BIN,ACPI_MOD.BIN相当于用CBROM32导出的ACPITBL.BIN或AwardTool.exe修改后保存的ACPI.BIN。

注:本想只用此程序来替换MAIN.BIN主模块完成修改而已,因为如果把ACPI.BIN加上374字节的SLIC表肯定是压不回BIOS的,修改过程会出错无法继续,感觉有点鸡肋。但是为了让大家各取所需还是把这个功能补上。

本修改版的AwardTool_sp.exe只适合有DIY经验的爱好者,请确保MAIN_MOD.BIN和ACPI_MOD.BIN是你所修改的BIOS的模块,否则后果很严重。

声明:仅用于试验环境的技术研究以及漏洞的验证。不涉及任何有
版权的内容,仅供技术交流研究之用。请使用者在24小时内删除,
由此引发的纠纷,一切后果自负!

             BIOS之家 Yangzai
               2009.11.26

附件下载地址请到BIOS之家

花了一天的功夫终于搞定HA-943GML-ML R261SCVX BIOS SLIC表动态寻址。

为了方便大家学习交流,也为了自己日后AWARD BIOS的修改积累思路和方法。

SLIC产生的原理:

1、SLIC依靠RSDT/XSDT表的导向作用,相当于RSDT/XSDT表的子表,也就是只要把SLIC表的32位地址,记录在RSDT/XSDT表内就可以产生SLIC表。
这是所有BIOS ACPI表子表产生的原理。静态方法也是用这个原理来产生SLIC表的。

AWARD BIOS的修改的基本思路:

1、修改ACPITBL.BIN,增加SLIC表;

2、修改ORIGINAL.BIN或GGROUP.BIN,增加SLIC表的寻址;
第1步的修改很简单就能完成,关键点在于第2步的修改。

具体步骤如下:

1、用16位编辑器打开ACPITBL.BIN,将RSDT表长度数值加4,且在表尾增加4字节的00。接下来就是SLIC表的添加,通常是在ACPITBL.BIN文件尾补足1至3个字节的 00,这是为了保证合并SLIC.BIN文件后,SLIC表头的地址能能被4整除。我的做法是SLIC紧跟RSDT表,由于SLIC为374字节,不能被4整除,将影响FACP的表头,所以在SLIC表尾增加2字节的00。
改前的截图
3edd751ex791a006345a6&690.png
改后的截图,黑色为差异处,蓝色为SLIC表,
3edd751ex791a028e7a76&690.jpg
新增的4字节为存放SLIC表的32位索引地址,偏移量为30。
2、修改ORIGINAL.BIN文件,查找RSDT,找到如下信息
3edd751ex791a07572d4a&690.png
太幸运了,前面还有刚好4字节的位置,可以放下一个表头。接下来就考虑SLIC存放的位置:
1、存放在RSDT前,将连锁影响到后面的表头索引地址偏移4字节;
2、存放在FACS后,感觉还是有点问题;(后面会提到)
3、存放在FACS前,那就是占用了FACS表头索引地址,只影响到后面的表头,比存放在RSDT前少了不少的修改,这个应该是最合适的。整个表前移4字节,由A290移到A28C,修改如图
3edd751ex791a0b5a69e9&690.png
接下来就反编译ORIGINAL.BIN,个人习惯使用hiew32进行反编译修改。
打开ORIGINAL.BIN文件,由于表由A290移到A28C,按F7,查找HEX:90A2, 来到这里
3edd751ex791a0eb08c99&690.png
按F3把A290修改A28C。由于已经增加了SLIC索引,把“MOV cx,5”姑且改为“MOV cx,6”。RSDTFACDSDTAPICMCFGFACS不是有6个表名,怎么cx寄存器才设置为5,难道FACS不在其内?带着这个疑问,继续往下。
按照前人的修改教程可知,8E44 为RSDTFACDSDTAPICMCFGFACS中RSDT表存放其索引地址的地址。
那么其他表依次存放的地址如下:

8E44  RSDT
8E48  FACP
8E4C  DSDT
8E50  APIC
8E54  MCFG
8E58  FACS
8E5C

如今我们已经新增加SLIC索引项,那么新的存放地址如下:

8E44  RSDT
8E48  FACP
8E4C  DSDT
8E50  APIC
8E54  MCFG
8E58  SLIC
8E5C  FACS
8E60

也就是SLIC占用了原先FACS的索引地址的地址,按F7查找HEX:588E
3edd751ex72829ba75add&690.png
刚好在其下,将8E58改为8E5C,A2A4正是FACS的位置,可见FACS的索引和RSDTFACDSDTAPICMCFG的索引是分开的,这也就是我选择把SLIC放于FACS前的原因,由于FACS没移位就省得改了。再按F7查找HEX:588E
3edd751ex791a186077f1&690.png
这里就是把FACS表的索引地址添加到RSDT表中,同样把8E58改为8E5C。由于FACS占用了8E5C,为了防止8E5C地址的重复使用,得再查找HEX:5C8E
3edd751ex791a1ed6faff&690.png
按F3把8E5C改为8E60,再查找HEX:608E,这次只找到毫不相关的代码。至此RSDTFACDSDTAPICMCFG重新定位寻址算是完成了,但是新增的SLIC索引地址还没加入到RSDT表中。
回到索引地址添加的地方
3edd751ex791a22f5594f&690.png
由于在ACPITBL.BIN中的RSDT表已经为SLIC表的索引地址设置好了偏移量为30的存放地址,现在只要把SLIC表的索引地址存入到RSDT表偏移30的位置处就可以完成RSDT表对SLIC表索引了。
3edd751ex791a26982923&690.png
去掉两句
or eax,eax

je 00000A4BF
这本是检验数值是否是0(空指针),以防系统崩溃的预防措施。整理得到如下代码
3edd751ex791a280310f6&690.png
到此全部修改完成。把ACPITBL.BIN和ORIGINAL.BIN替换掉原BIOS里的模块就OK了。

进入下载页面

3edd751ex7745c390e544&690.jpg
最近研究了XP启动引导文件多重启动菜单,顺手做了个XP SP3 17 OEM 大合集,集成了AMD、NVIDIA、INTEL 主板的SATA驱动和exFAT文件系统补丁,为了使光盘容量尽量小去除了XP升级方式,只能通过光盘进行全新安装。本光盘镜像使用微软的CDIMAGE进行制作,镜像文件的排放顺序应该比UltraISO更合理,安装速度更快。所有的安装文件均拷贝至MSDN最新的XPSP3光盘镜像(4个品牌激活OEMBIOS除外),安装完成的系统绝对干净。只要你的机器BIOS能通过验证,安装完成后都是激活状态,绝非修改WINLOGON.EXE、去除OEMBIOS.BI_ 达到减少光盘体积的残缺版本,最大程度上和原版保持一致,可以放心的通过Windows Updata进行升级补丁,不会因为系统补丁和正版增值更新WINLOGON.EXE造成,系统密钥验证失败的悲剧。经常给同学、朋友和同事装机的达人不妨下个备用,这个光盘对于国内品牌机器应该还是非常实用的。
进入下载页