2010年1月

This is only to introduce how to modify and checksum on the gma950 vbios.
you can learn the way then cross reference to your vbios, in order to modify right parameter make machine do well.
fllow me to modify gma950 vbios
3edd751ex7e1f345af594&690.jpg
custom the display IO
3edd751ex7e1f3503362a&690.jpg
custom the FPS,the parameter more little more capability
3edd751ex7e1f358c9bcc&690.jpg
custom the display device work in 3:4(0x33 ) or 16:10 (0x73)
3edd751ex7e1f35d8e6ea&690.jpg
this is the checksum,if the checksum is wrong,it will not work any more,on some machine this error maybe deadliness.

checksum: original vbios equal to modified vbios
original:0x01 + 0x01 + 0x4A + 0x33 + 0x00 = 7F
modified:0x13 + 0x09 + 0x48 + 0x73 + 0x? = 7F

?= 007F -(13 +09 +48 +73) = A8(low)

如题所云,就是个BATCH文件

内容如下

@echo off
title "简单的静态/动态DHCP转换工具"
echo.
echo #设置环境变量
set name="本地连接"
set addr=172.0.0.100
set mask=255.255.255.0
set gateway=172.0.0.1
set dns1=202.101.103.55
set dns2=218.85.157.99

echo #判断%name%是否启用DHCP
for /F " tokens=1,2,* " %%i in ('netsh interface ip show config %name% ') do if %%i==DHCP if %%j==启用 if %%k==否 (
echo #经检测%name%的DHCP已经关闭,现将启用DHCP,请稍候。。。。。
echo #%name%的接口IP配置
echo #设自动获取IP
netsh interface ip set address name=%name% source=dhcp >NUL
echo #设自动获取DNS
netsh interface ip set dns name=%name% source=dhcp register=PRIMARY >NUL
netsh interface ip set wins name=%name% source=dhcp >NUL
) else (
echo #经检测%name%的DHCP已经启用,现将设置为静态的DHCP,请稍候。。。。。
echo #设静态IP:%addr%,子网掩码:%mask%
netsh interface ip set address name=%name% source=static addr=%addr% mask=%mask% >NUL
echo #设默认网关:%gateway%
netsh interface ip set address name=%name% gateway=%gateway% gwmetric=0 >NUL
echo #设首选DNS:%dns1%
netsh interface ip set dns name=%name% source=static addr=%dns1% register=PRIMARY >NUL
echo #设备用DNS:%dns2%
netsh interface ip add dns name=%name% addr=%dns2% index=2 >NUL
netsh interface ip set wins name=%name% source=static addr=none >NUL
)
echo #
echo #显示%name%配置结果
netsh interface ip show config %name%

@pause

前一阵子已经制作过WIN7引导文件嵌入菜单,现在再发个XP引导文件嵌入可选菜单,使用方法和WIN7引导文件嵌入菜单的方法一致,只是在那基础上增加了一个隐藏的后台GRLDR,按CTRL+HOME,就可以进入GRLDR的命令行,使得光盘的使用性更加灵活。
3edd751ex7df70dde7587&690.jpg
原理:引导文件首先会从“SHOYO”目录引导,若失败则引导“I386”目录,接着引导BOOTFIX.BIN文件,出现从光盘引导的提示,按任意键就从光盘引导,否就从硬盘引导。

修改点示意图如下,简单明了
3edd751ex7df72954e52b&690.jpg
本例包含8个菜单项,11字节的“w2ksect.bin”、12字节的“recovery.bin”……故菜单项数hex:08,引导文件名长度hex:0B,其后就是引导文件名,以此类推。

通过修改这些区域,可以制作出符合我们要求的菜单。最大可以存放26个菜单项。

提示:请确保每个引导文件名长度的准确性,只要错一个引导文件名的长度将会影响后序引导文件名的索引,当然一定要保持菜单文本起始位置的不变和引导文件大小的不变。

建议:被引导文件最好是grub4dos,可以很方便的将引导菜单内置,看起来更简洁。镜像格式为支持ISO-9600的编码。
DEMO镜像下载

SLIC表头很多都在BIOSCODXX.ROM文件里,对于直接替换SLIC表而出现数字签名不完整的BIOS,可以通过增加额外ACPIXX.ROM来达到增加SLIC的目的,但是这样刷完会出现两个SLIC表,看着着实变扭。通过对BIOSCODXX.ROM的汇编代码分析,我们可以很容易的将原SLIC屏蔽掉。

BIOSCODXX.ROM前27字节为非代码区,作为模块识别码。
3edd751ex7cdaa6a70c4a&690.jpg
为了方便分析,先将其截去
3edd751ex7cdaab8148f5&690.jpg
查找SLIC表头地址
3edd751ex7cdab01870cb&690.jpg
SLIC表头地址:0x0F187;接下来用hiew32打开文件,查找HEX:87F1
3edd751ex7cdac70050b1&690.jpg
这个就是SLIC表头的生成代码,0xF160为调用入口地址,接下来只能往上或往下去寻找 CALL 000F160的汇编语句
3edd751ex72e2b050cff2&690.jpg
不难发现,在调用SLIC表的生成前有两个判断是否要生成SLIC表,既然要废弃掉SLIC,就让其跳过SLIC生成的条件,修改地址0xF07B,其汇编代码为:JMPS 0FA3,这样就跳过了SLIC的生成了。最后记得把去掉的27字节重新补上,否则后果很严重。