xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
添加文章 English Version

BIOS中的分区工具


创建时间:2002-11-24
文章属性:原创
文章来源:http://nfans.net;http://xfocus.org
文章提交:killer (cooladm1n_at_21cn.com)

BIOS中的分区工具

killer

http://nfans.net


其实这只是一个广告 :)

下面是广告时间:

    你是否为ms的丑陋的FDISK感到头痛?或者在为没有一款可心的多OS引导工具发愁?别急,下面就让我来帮助你把分区工具集成到BIOS中,以后你不用引导系统就可以对硬盘分区了,hoho~~

1、介绍:

   以前一直对BIOS感到神秘莫测,因为他掌管了computer的启动大权,各种设备要听他调度,后来捷波主板提供了一个恢复精灵,据说对删除文件、format/fdisk系统都能恢复,中文版本的,还听说是一大卖点。于是一激动就给人家写了个mail,结果人家说商业技术机密,就不理俺了。
   本打算反汇编看看,但偶用的OS都是WIN32下的,居然无法反汇编,而且也找不到DOS下的反汇编工具了,另外这个从BIOS中分离出来的.dat文件反汇编也不会正常。(谁有好办法不防告知一声)后来看到有人在bios中居然集成了分区工具,才知道写能运行在BIOS中的软件的格式和正常的略有不同,为了能让大家体会一下这个工具的方便之处和使用方法,我简单说明如下:

   bfdisk (Bios Fdisk) 是一个多系统的分区工具,他可以支持划分15个分区安装15个操作系统,可以设置在每个系统启动的后能看到哪些分区。软件集成分区、多系统引导的功能,这个以ISAROM格式编写的软件还支持高分辩率的LOGO,强!还有,这是全中文的界面。
  
  下载:http://nfans.net/tmp/bfdisk.rar
        
  
   下载完成后,可以看到压缩包中包括bfdisk.rom、bfdisk.com两个文件,我们需要将bfdisk.rom这个文件写入BIOS中。BFDISK.com是BFDISK.rom的实模式下的版本,他们的功能是一样的。通常我们利用bfdisk.com来检测一下显卡,看看是否支持VESA1.0。如果能看到出现的画面就可以确定显卡测试通过。

   在测试完成后利用AWARD的工具进行BIOS的修改,首先把主板上的BIOS读出来:

   推荐用winflash.exe来读取,这个软件上手比较快,而且能运行在win9x上。执行后点保存的按钮,在出来的对话框中起个名字,点保存后出现save bios窗口,点击backup按钮即可。(我这里把BIOS保存为815ep.BIN)

   然后用cbrom.exe来进行修改,用下面的指令将bfdisk.rom加入到bios文件中:
   CBROM 815ep.bin /ISA BFDISK.ROM
   最后在用winflash.exe 来将BIOS文件写回主板。
   方法是点击工具栏上面保存后面的按钮(第三个),在出来的对话框中找到刚才修改后的BIOS文件。点击打开按钮后会出现新的对话框update bios,点UPDATE按钮即可。(通常所谓的BIOS升级就是如此简单的,我们通过此方法可以集成你想集成的其他的BIOS模块)

   然后重新开机,在硬件检测完成后就会看到一个漂亮的LOGO,在这个时候按CTRL+F键,就会进入程序的主界面。

   需要注意的是该软件只能运行award bios主板,显卡支持VESA1.0,主板支持8.4G以上硬盘的配置,还有利用ISAROM来使用的工具只能加载一个,就是说如果你的机子中有恢复精灵的话,在使用本软件后恢复精灵将会失效。
另外,如果用该软件对硬盘进行分区并进行多系统引导了,不要用PQMAGIC之类的软件来重新移动硬盘分区,很简单这会造成引导程序出错。

   have fun ~

   如果你不小心改坏了导致无法开机,别怪我。。。
   可以通过这个方法修复回来,利用sys a:作一张引导软盘。然后拷贝awdflash.exe 和没有修改的815ep.bin到软盘上,在软盘的autoexec.bat写上awdflash 815ep.bin,软盘启动成功后会两次车,然后按“Y”键,就会将没修改的815ep.bin写回主板。


2、原理:

   上面已经说出,该工具是通过ISAROM格式编写的,只要遵守ISAROM的规范,就可以写出能在BIOS中使用的工具,下面是一个hello world  !写回主板后开机会显示hello world !提示。

有如下代码:
=============================================================

;FILENAME BHW.ASM

;MAMS6.0 BHW

;LINK/T  BHW

.Model Tiny,C
.486
.code
InitCode  PROTO
printf    PROTO :WORD,:WORD
GetKey    PROTO
org 0h
start:
        DW 0AA55h                           ;扩展BIOS标志
        DB 40h                                 ;本程序大于32K值为80H,否则为40H
        invoke InitCode               ;入口标志
        retf                                     ;远程返回
Message db 0dh,0ah,'hello world!',0dh,0ah,0
InitCode proc
        invoke printf,cs,addr Message
        invoke GetKey
        ret
InitCode endp
printf proc uses ds MemSeg:WORD,address:WORD

    push MemSeg

    pop  ds
        lea si,address
        xor bx,bx
        mov ah,0Eh
        cld
        lodsb
        .while al != 0
                int 10h
                lodsb
        .endw
        ret
printf endp
GetKey proc
@@:
        mov ah,1
        int 16h
        jz @B
        xor ax,ax
        int 16h
        ret
GetKey endp
end start

=============================================================

利用本文提供的方法,你可以写出能在BIOS中运行的程序,如果具体想编写的话,最好要参考PNPBios的资料来编写。


本文资料和技术均来自周锐光,偶不过学习了一下。感谢周兄的资料和奉献!