未标题-1.gif (1829 字节)

                网站论坛  返回主页  联系我们  打印此页    QQ:125081447    

                      BIOS维修网站>> BIOS维修 >> BIOS基础知识             

如何保护主板BIOS

:此文章图片及文字为BIOS维修网站所有,请不要随意转载或用于其它商业目的;如要转载,请注明出处。

    众所周知的CIH病毒以及新发现的Win32.Kriz病毒,它们不但会同普通的病毒一样对计算机的软件(硬盘数据)进行破坏,还能破坏计算机“硬件”--它能重写主板的BIOS数据!同时,对于热衷于BIOS升级的DIYer来说,升级时的误操作和升级失败等种种原因都可能破坏BIOS。BIOS程序是在每次开机或重启动时自动进行的,控制微机从硬件自检到启动操作系统的过程,并负责解决硬件的即时需求。所以当BIOS损坏后,微机根本不会有启动的动作,屏幕上也不会有任何显示--开机后别说蓝天白云,屏幕根本就不亮,没有显卡初始化信息,没有微机自检信息……总之什么都没有。当心爱的电脑出现这种现象时,我们唯一的反映大概都是“世界末日”来临了。

    BIOS ROM是一种固化了系统主板Firmware的特殊的存储器芯片。Firmware是软件,但与软件完全不同,它是固化在ROM芯片内部的程序代码,ROM芯片的功能就是由这些程序决定的,ROM芯片只是Firmware的载体。由此可见,病毒再可怕,也不会对芯片造成物理损坏,而只是改写了BIOS芯片内的Firmware。BIOS程序被破坏后,我们可以用好几种方法把它修好。很多杂志上都介绍了用热插拔、ISA显卡+BIOS的Boot Block块或盲操作来恢复BIOS。但是,热插拔有效,但却相当危险,操作时稍有不慎(插拔时芯片方向插反或芯片管脚短路),有可能把芯片甚至主板烧毁。用ISA显卡+BIOS的Boot Block块的方法作本地修复,是一个非常安全、相当简单的方法,但这种方法也有其局限性,因为现在的升级软件往往连Boot Block块一起“刷新”,受损芯片的Boot Block块是否完整还很难说。介于BIOS芯片在系统中的重要性,以及在平时使用、升级过程中的潜伏的种种危机,如何防护BIOS芯片不受破坏,升级时如何细心呵护BIOS芯片以绝后患,对手无寸铁的我们来说,就显得非常重要。具体操作听我一一细细道来。

    一、备份BIOS文件,有备无患
    即对新机器的BIOS进行备份(特别是非主流、大众化杂牌主板尤为重要),这是一种软防护方式,当BIOS被病毒侵蚀或误操作破坏不严重时,我们可以用备份文件进行恢复。不过,这种方法具有很大的局限性,常常是BIOS升级失败后,机器根本都不能正常启动,只不过备份的文件能为其它修复方法提供源文件,以免万一BIOS损坏,临时抱佛脚,却找不到合适的BIOS源文件。不要以为现在的网站上到处都是BIOS升级文件,就对这种方法不屑一顾。各主板厂家一般只会推出最新主板BIOS的升级文件,时过境迁,除了你自己,谁也不会为你保留已过时主板的BIOS程序。要保存现有BIOS的Firmware,也很简单,例如对于AWARD的BIOS,使用命令:
         AWDFLASH Filename.bin /Pn/Sy ,就可以把Firmware保存在文件Filename.bin中。

    二、制作BIOS硬备份
    即把备份的BIOS的Firmware代码写入一个新的芯片做一个硬备份(ROM类型不限),以确保万一。放在抽屉里的BIOS肯定比放在主板上的后备片可靠,不是吗!这样当主板的BIOS完全被破坏时,我们可用备份的BIOS轻松替换。

    目前有很多厂商都生产主板上用的BIOS芯片,常见的品牌有:Winbond、SST、Intel、MXIC、ATMEL等,型号各异,容量和写入电压也各不相同。分一下类,我们发现目前主板上用的BIOS芯片主要有以下几类:

    一类是早期的FLASH ROM ,包括28、29两大系列,其内部是分块的,不同的区域存放不同的数据。象INTEL的28F001BXT120和WINBOND的29E011-12,就属于这类芯片。28F001(1Mbit的FLASH ROM)的内存分布,芯片内部的128K内存分为几个块。这类芯片可以在+5V电压的条件下读取,而写入则是分块进行的,其中BOOT BLOCK必须Vpp=12V PR#=12V才能编程,从而有效的保护BIOS的BOOT BLOCK启动区。受到破坏的BIOS,如果这块区域内的信息没有丢失,则有的机机器用老式的ISA显卡启动仍能显示。采用这类芯片的主板上一般都有升级用的跳线。

    第二类是后期的FLASH ROM芯片,内部取消了分块,如INTEL的28F010芯片及ATMEL的29C010芯片,就是其代表。这两种芯片的区别是,28F系列芯片是双电压设计的,第1脚要加Vpp(+12V)编程电压才能写片,升级时同样需要打开机箱、设置跳线才能操作。29系列的芯片才是真正意义上的FLASH ROM,是单电压设计,读写都在5V电压下进行(相比于28系列,相应的Vpp脚为NC),它可直接利用VDD(+5V)写片。

    第三类芯片是EPROM芯片,即那种芯片表面带玻璃窗口的芯片,芯片型号以27打头,如27C020、27C1001等,片内信息需用紫外线擦除,主要用于586以前的电脑,属于比较“坚硬”、CIH“啃”不动的芯片。

    各类芯片的管脚示意图见图2,从图中可以看出,主板上常用芯片的封装主要有DIP、PLCC两种形式,除了编程时写入电压不同外,相同封装的芯片管脚排列一致,对应管脚的功能相同,不同类型的芯片的功耗也相差不大,因而,如果不考虑升级的因素,即使是芯片的类型不同,只要容量相同,就可以互换的。

    借助于ROM编程器,可以很容易地制作BIOS备份。不要以为ROM编程器很神秘,现在市场上流行的一种型号为MEP-100的编程器,价格比一块中档的主板还要低,软件操作也相当方便,科技市场上已有人专门用它来制作BIOS硬备份。

    由于EPROM价格较低,不怕病毒破坏,读写速度并不比其它类型的芯片低,在平时的使用中比FLASH ROM要可靠,后备片最好采用EPROM,如用27C020-10代替原来的29C020-12。另外,在主板上使用EPROM也要注意,现在有的EPROM,其编程电压Vpp已降到12V,用在有跳线的主板上时,要防止主板无意中改写其数据。为了便于更换,BIOS一定要可拨插,所以以后买主板时,必须要选用带BIOS管座的主板。

    三、BIOS的彻底防护 大多数主板都有BIOS防写跳线,当跳线打开时,对BIOS只能读不能写,大多数人都这样认为。然而,笔者从实际应用中发现,此种方法其实并不是绝对管用的:一台机器,主板为华硕的T2P4,主板上有升级跳线,自以为有升级跳线保护,因此平时不免大大咧咧,不大注意杀毒。机器以前运行一直正常,偶而有一次要进行CMOS设置,但进入CMOS后,发现键盘失灵。以为是电源问题使键盘锁住,关电源重新启动后故障依旧;对CMOS放电,也没有效果,但键盘在DOS和WINDOWS下正常。由于故障是在系统引导之前出现的,而此时操作系统尚未进驻内存,其它软件就更不用说了,认定是病毒作怪又没有理由,必定是极不愿承认的硬件故障。死马权当活马医吧,结果在查杀病毒时,果真查出了CIH病毒,这才想到可能是BIOS被改写了,幸好键盘只是在CMOS下失灵,于是上网到华硕网页上下载最新BIOS源代码T2P0207.BIN,重新刷新后,故障排除。

    为什么BIOS有防写跳线也会被破坏!究其原因,和主板上用的BIOS芯片的类型有关。检查华硕的T2P4主板,发现主板使用的BIOS芯片属于上面所说的第一类,芯片型号为28F001。经对比图2中的芯片管脚排列,发现该芯片编程端Vpp脚是一直接+12V的,而所谓的编程跳线是接在第30脚上(由图2可见该脚为PR#脚),当将跳线置于编程状态时,该脚电压为+12V,此时就可以对BOOT BLOCK进行编程。而且就算是断开跳线,也只能保护BIOS的BOOT BLOCK启动区,其它区用软件照样可以改写。因此认定该主板可能受CIH之类的病毒破坏了,只不过受损程度不深,所以键盘在DOS及WINDOWS下还可用。

    从前面的分析中我们知道,现在主板上用的BIOS芯片,尽管容量有1M和2M之分,然而不论是1M还是2M的BIOS ROM芯片,都有一些共性,即芯片大多为32脚的DIP封装,它们的插脚排列和功能也基本上一致,其中16脚是接地端,32脚是是芯片电源,31脚是写入允许脚。不同类型的芯片的不同之处是芯片的写入电压不同,有些写入电压是12V(28F系列),有些是5V的(29C系列)。除此以外,芯片的写操作时序是相同的,即只有当WE#脚从高电平变成低电平时,一个字节的数据才能写入到芯片中去。根据此原理,我们只要增加一个电阻,就可以在计算机遭受CIH病毒的攻击时,使硬件免受于损坏。其具体操作是,拨出BIOS芯片,将31脚向外侧扳平,重新将芯片插入插座,找一个10K的电阻,电阻的一端接到芯片的31脚,另上端接同+5V电源接到一起,这样,由于已同电路脱离了联系,WE#脚一直处于高电平,即处于读状态,不论是病毒还是误操作,都不会对芯片内的数据进行改写,这样,就可不必再担心硬件遭受CIH病毒破坏而整天提心吊胆了。具体原理图见图3。

    四、给FLASH ROM的VPP电源加个开关
    前几天,一位朋友向我哭诉他的BIOS芯片由于电源损坏而受牵连损坏。经检查,发现其主板的BIOS芯片正是Intel公司的28F020。如上所述,28F系列BIOS的Vpp端是与开关电源的+12V电压相连,这是相当危险的。对EPROM编过程的人都知道,手册上对Vpp编程端的电压有严格的限制。在对EPROM芯片编程的过程中,甚至Vpp供电中有毛刺超出允许值,则芯片就可能会立即损坏。而在微机的开关电源中,+5V电压是自控稳压的,而+12V是不控制的,当+5V端负载重时,12V端电压会升高,反之则降低(无论AT电源还是ATX电源都是这样的)。所以在这种情况下的BIOS芯片是多么危险,一旦电压升高,超过芯片的耐压允许值,甚至连芯片的BOOT BLOCK块都有可能被破坏。因此只有把FLASH ROM的Vpp(+12V)脚彻底断开,才能实现真正意义上BIOS的保护。另外,FLASH ROM与CMOS类似,都属电压敏感型器件,本身就容易被击穿。
    不过这只适用于采用双电压的芯片,如29E011、28F020等,单电压的芯片,读写电压都是+5V,不存在这种威胁。

    五、活用刷新程序,升级BIOS时留一手
    制作BIOS的硬备份,要去找计算机公司,或自己手中要有BIOS编程器,这是一个好方法,但肯定不是一个最简便的方法。采用如上所述的保护跳线,也只能保护芯片在平时不受CIH之类病毒的破坏,并不能保护芯片在升级时Firmware 文件被修改、Firmware 文件不匹配等造成的失误。升级BIOS,我们需要的是万无一失,但有时还需要有吃后悔药的机会,那么,如何才能确保升级的灵活性呢?

    升级失败后,首先要做的,是冷静、仔细地观察系统启动时的症状,因为视BIOS中Firmware不完整程度的不同,系统时启动时各部件产生的动作也不同,此时要在本地修复系统,唯一的希冀是BIOS的Boot Block基本引导记录未被破坏。判断Boot Block是否被破坏的一个重要依据是,系统启动时,软驱是否有自检的动作(软驱灯是否亮,以及是否听见软驱马达转动的声音)。如果软驱有动作,如果软驱有动作,并且当软驱灯熄灭后敲回车键,软驱再次产生读盘的动作,那么,就可以基本判定Boot Block块没有损坏。只要Boot Block块没有被刷新,我们就可以用老式的ISA显卡或干脆用盲操作法来重写BIOS,具体操作各报刊介绍得已比较多了,这里不再详述。

    如前所述,28F系列的芯片内部是分块的,通过设定相应的跳线可保护相应区域中的内容。然而,这些现在都已成为昨日黄花了,因为现在的主板上大多采用的是29C系列的芯片,无法用设置硬跳线的的手段来保护。

    还是从BIOS的数据结构入手,来寻求目前主板上常用的29C系列Flash ROM的保护措施。提起BIOS代码修改程序CBROM.EXE,前一段时间曾修改过开机LOGO的朋友可能还记忆犹新。用该程序可以看到BIOS升级文件中包含的文件。如我现在用的机器是磐英6VBA,主板上用的BIOS为6VBA0127.BIN,在DOS命令行状态下键入:

    “CBROM 6VBA0127.BIN/D”命令后,可看到BIOS中包含的内容。如表一。从列表中可以看出,BIOS升级文件虽然是一个独立的文件,但它是由一系列功能独立的文件经压缩合并而组成的一个文件包。从表中没有发现Boot Block块信息,难到现在的29C系列Flash ROM中已取消了Boot Block块?太令人失望了,先不管这么多,调出Ultraedit,以16进制方式对比查看BIOS的Firmware文件。查看到的Firmware的数据结构和列表中大体相似,但有区别,见图4。这也是将Firmware文件写入BIOS后,BIOS芯片内数据的地址结构。注意看,在地址的高端,赫然是我们所需要的Boot Block 块。

    表1、6VBA0127.BIN中包含的文件:

NO. Item-name       Original Size         Compressed-Size         Original-File-Name
0    System bios     20000h(128.00k)       156DAh(85.71k)                Original .tmp
1    XGROUP            06481h(25.13k)        0045D0h(17.45k)                Awardext.rom
2 Cpu micro code      08000h(32.00k)        04DBDh(19.43k)                CPUCODE.BIN
4   ACPI Table        022B3h(8.67k)         00D51h(3.33k)                 ACPITBL.BIN
3 EPA Pattern         0168Ch(5.64k)          0030Dh(0.76k)                AwardBmp.bmp
5 YGROUP ROM          00001h(0.00k)          00029h(0.04k)                Awardeyt.rom


    解铃还需系铃人,仔细分析一下AWDFLASH.EXE刷新程序吧?在DOS方式下,敲入AWDFLASH /?,即可显示出该刷新程序的使用帮助项目,其中有一个参数是sb,其功能是跳过Boot Block模块刷新。原来解决问题最简单的方法在这里。在升级时,使用sb参数,保护芯片原来的Boot Block 块不被修改,留得青山在,不怕没柴烧,即使升级有什么失误(升级文件不兼容、升级文件被修改过、升级过程中断电………),用Boot Block 块启动机器,重新操作即可,完全不会有什么损失。

     最后还要提醒大家注意,一个新版本的BIOS出现,通常有以下几点因素:增加额外的功能、修正旧有版本的错误或兼容性问题、增加新CPU的识别。然而在许多情况下并不需要升级你的BIOS。 一般而言,最新的BIOS版本主要是针对旧有BIOS版本做修正。假如你的电脑系统并无任何周边元件相冲的问题(如AGP显卡没法用)或无法使用的问题,建议请不要随意去更新目前BIOS版本。因为谁也不能保证每次的BIOS更新都会成功。万一不巧,你的电脑系统可能会因为BIOS更新失败造成不可预期的反效果,有时也会降低电脑性能。我现在采用的磐英6VBA主板,原BIOS的版本是99/12/25,改用2000/02/27版本后,机器就经常出现加电后机器不启动,需反复按动RESET键的现象,换回原来的版本后,故障排除。

建议使用Netscape4.0或IE 4.0以上版本,以800*600浏览
Copyright © 2001 BioSrepair.com All Rights Reserved   鲁ICP备05007673号
山东.烟台.BIOS维修网站 网络耗子制作完成  Email:diybios@263.net  QQ:125081447
电话:0535-5482905  传真:0535-5481905