在windows下刷BIOS的原理是什么?

a294447011294447011 2010-07-17 08:05:32
都知道AFUWIN.exe是可以在windows xp下刷BIOS的,它是利用Ucoresys.sys去r0下实现刷BIOS的。我们又知道BIOS程序在 windowsxp 下被影射到了物理内存 0xf0000 到0xfffff里了,所以类似AFUWIN.exe的刷BIOS的操作是不是实际上是对物理内存0xf0000 到0xfffff里的数据刷新?就是把新的bios程序写到了物理内存 0xf0000 到0xfffff里?
...全文
1604 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hank_xin 2010-07-21
  • 打赏
  • 举报
回复
下面为转帖,但也是我本人的意见,主要是打字太累了~,绝非那种答非所问的不负责任的回答.都经过我认真核查过了,这也是我想打得,就转过来了.
另外那位让人放电的朋友肯定没有看清题目或者你也不懂~另外说明一点Awdflash是刷award主板的,如果是AMI的你要相应的换成amiflash 了,并且命令也不相同,但原理一样.你可以查看相关资料.
还有就是可以找专业的刷bios的帮你刷进正确的BIOS,但要花钱了.
以下转载部分
1.更换新的BIOS芯片。这当然是最有效也是最简单的一种方法,你可以与代理商或主板生产厂商联系,向他们寻求你所需要的BIOS 芯片,用它替换损坏的芯片即可。绝大多数主板厂商都会向用户提供BIOS芯片(有的还是免费提供),但这一方法比较费时而且麻烦。

2.利用BIOS Boot Block引导块恢复。主要思路是利用BIOS上的一个BIOS Block(开机引导块)进行恢复。因为在一般情况下Flash ROM中的BOOT Block模块不会在BIOS升级过程中被破坏,但它只能支持很少的硬件如ISA显卡和软驱等,如果你的显卡是AGP或PCI的,在恢复过程中将是漆黑一片。不过,我们完全可以利用这个BIOS Boot Block引导块完成恢复工作,具体步骤如下(以Award BIOS为例):

a.做一张DOS启动盘,只保留三个启动文件,一定不能有Config.sys和Autoexec.bat两个文件。
b.将 Awdflash.exe和*.bin文件拷贝到软盘中。
c.在启动盘中建立一个Autoexec.bat文件,内容如下:
Awdflah.exe *.bin /sn /py(*.bin是你的BIOS更新文件,而其中的参数/sn /py则表示不备份,而仅仅刷新BIOS)。
d.用此软盘重新启动,系统会根据Autoexec.bat自动刷新BIOS,此时虽看不到任何显示(假如你用ISA显卡更换AGP、PCI显卡,可以看到有关信息),但你可注意到软驱灯是亮的,而且软驱在读盘,等软驱灯熄灭后稍待片刻就可重新启动,如果一切顺利,系统BIOS已经恢复正常了。
不过,要想使用这个方法来恢复损坏的BIOS,最好在升级BIOS前就要做好这张恢复盘或到其它机器上做恢复盘。

3.利用Flash Recover Boot Block引导块
对于另一些主板(例如某些使用Phoenix BIOS的主板),主板上的BIOS中有一个Flash Recover Boot Block引导块,这个引导块不会被升级程序覆盖。主板上有一个Flash Recover Jumper跳线,BIOS升级失败或被CIH病毒破坏后可以恢复,方法如下:
a.把Flash Recover Jumper跳线设置为“Enable”。
b.把可引导的升级盘插入A驱动器(盘中的BIOS一定要是能正常工作的,文件名要符合主板的要求,因为主板要把软盘中的BIOS备份自动写回Flash BIOS)。
c.重新启动电脑。
d.因为这一小段代码是放在不可写入的引导块区域的,所以不支持显卡,升级过程只能靠声音和软驱指示灯的提示来判断是否完成。如电脑喇叭发声且软驱灯亮着时,表明系统正在恢复BIOS到Flash BIOS,当电脑喇叭不发声且软驱灯也不亮时,表明恢复完成。
e.关掉电源。
f.把Flash Recover Jumper跳线跳回默认位置。
g.取出软盘,开启电源。
3.热插拔法。你可以利用一台与你的BIOS芯片完全相同、可以正常工作的计算机,启动到DOS状态下,用平口螺丝刀小心地拔出工作正常的BIOS芯片,然后将损坏的BIOS芯片插入,进行BIOS升级,一般情况下很快就可以将损坏的BIOS起死回生。但这个方法危险性极大,不是老鸟级的高手请勿试验,因为在气候干燥的季节和环境下,热插拔过程中产生的瞬间放电有可能对主板和芯片造成极大的损害,所以在热插拔前最好设置接地导线,同时在BIOS设置中要开启所有ROM映射功能,即将System BIOS Cacheable设为Enable。
gdd714 2010-07-21
  • 打赏
  • 举报
回复
都知道AFUWIN.exe是可以在windows xp下刷BIOS的,它是利用Ucoresys.sys去r0下实现刷BIOS的。我们又知道BIOS程序在 windowsxp 下被影射到了物理内存 0xf0000 到0xfffff里了,所以类似AFUWIN.exe的刷BIOS的操作是不是实际上是对物理内存0xf0000 到0xfffff里的数据刷新?就是把新的bios程序写到了物理内存 0xf0000 到0xfffff里?


被映射到了物理内存不代表刷bios的时候就是操作的物理内存,只是加载运行的时候用内存读取。
就是just4 2010-07-19
  • 打赏
  • 举报
回复
类似AFUWIN.exe的刷BIOS的操作是不是实际上是对物理内存0xf0000 到0xfffff里的数据刷新

应该不是这样的吧,BIOS只是主板上的一块ERROM之类的芯片,这个主机上外接PLC芯片应是一个道理
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qihuanfengyun 的回复:]
你知道,xp虚拟内存的BIOS地址映射????
[/Quote]
好象是物理内存0xf0000吧?
xpddk驱动程序下:
PHYSICAL_ADDRESS paddr;
paddr.QuadPart = (__int64)0x00000000;
//取得物理地址0的虚拟地址
PVOID maped = MmMapIoSpace(paddr, 1024*1024, MmNonCached);
........
MmUnmapIoSpace(maped, 1024*1024);
qihuanfengyun 2010-07-17
  • 打赏
  • 举报
回复
你知道,xp虚拟内存的BIOS地址映射????

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧