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