编程实现Flash Rom BIOS的读取或写入(100分)

  • 主题发起人 主题发起人 wyghf
  • 开始时间 开始时间
W

wyghf

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用Delphi或C实现Flash Rom BIOS的读取,就象BIOS Update程序(如ASUS的AFlash,PFlash)读取BIOS一样.我还发现一个怪现象,用AFlash在DOS和WIN98下读出的接果不一样.如何关闭或打开BIOS Shadow(not in CMOS).
 
使用嵌入式汇编。
 
搞错没有?你要读写Flash Rom BIOS?你是不是要搞加密呀?我劝你还是不要做这样
的试验,你编程时总要调试的,难道你要对Flash Rom BIOS进行这种危险的试验?若
你真想这样,请使用汇编,等等,你不是也想编个病毒什么的吧?在Delphi中好像有
个内存数组的东东,你试一下是否能用。~o~
 
已答问题中有过讨论。
结论:没有通用的方法,可移植性有问题。
 
你是不是想做一个CIH病毒???????????????//
 
以上回答都不能令我满意!
 
我知道Bios的内部结构,但是否就是Flash的类型就不得而知了!
 
下面是读取Flash Rom BIOS内容的部分代码,至于写入的代码,
比较危险,我觉得应该先熟悉汇编之后,再进行,否则很容易出错。

function Treg_edit.inportb(portAddr: word): byte;
asm
mov dx, portAddr
in al, dx
end;

procedure Treg_edit.outportb(portAddr: word; bytePut: byte);
asm
mov cl, bytePut //save dl to cl, bytePut is Passed by DL Register
mov dx, portAddr
mov al, cl
out dx, al
end;

procedure Treg_edit.SpeedButton2Click(Sender: TObject);
var _buf: array[0..127] of byte;
i:integer;
_coms:string;
begin
memo1.Text:='COMS数据';
for i:=0 to 127 do
begin
outportb($70,i);
_buf:=inportb($71);
appendstr(_coms,inttohex(_buf,2));
appendstr(_coms,#32);
end;
memo1.Lines.Add(_coms);
end;
 
接受答案了.
 
后退
顶部