资源描述:
《实验1:引导程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2.3实验1:引导程序设计既然引导型病毒己经是历史,但设计口己的引导程序在某个时候还是可能需要的。本节我们将模拟病毒替换原來的引导程序,设计自己的引导程序。1.编写代码设计一个简单的主引导程序,安装后使机器在每次启动时都显示一行字符串“Hell,World!”,然后再装载系统。引导程序必须是com格式,程序分为4部分:显示字符串、延时、将自己读到另一个位置和调用原引导程丿仇延时是为了让显示的字符串稍作停留。因为BIOS总是把主引导程序读到内存0:7C00H再开始执行的,现在要把原來的主引导程序读到0:7C00H来,必须先将现在的引导程序
2、占有的位置让出。调用原来的引导程序通过调用int13h即可实现。实现的效果如图2・9所示,代码如下。Hell,World图2・9新的引导程序界面:文件名BOOT.ASM•MODELTINY.CODE.STARTUPDB7B00HDUP(0)开始,与引导同POS1EQU$JMPSTART:com格式程序从100H,加7B00H让其从7C00H;POS1等于当前偏移地址;跳过数据部分WORLD%0COLUMN1DB30TIME_OUTDW0TIME_INDW0START:“HELL,INFO1DB:定义列号,字符从此位置开始;延时用;延时用
3、:滚动屏幕,设置背景色口清除屏幕已自字符MOVSI,OFFSETINFO1;用SI表示字符串偏移地址MOVAX,0600HMOVDX,184FH;滚动的行、列数MOVCX,0MOVBH,0:背景颜色为黑色INT10HAGAIN:;移动光标位H(COLUMN1,10)MOVAH,2MOVDH,10MOVDL,COLUMN1MOVBH,0INT10H;在光标处显示字符MOVCX,1MOVAH,9MOVAL,[SI]MOVBL,12MOVEH,0INT10HINCSIINCCOLUMN1CMPBYTEPTR[SI],0JNZAGAIN:延时,
4、若有任意键输入则结束延时LOOP_OUT:INCTIME_OUTMOVTIME_IN,0LOOP_IN:INCTIME_INCMPTIME_IN,60000JBLOOP_INCMPTIME_OUT,20000NOPMOVAH,1HINT16HJNZCLOSE_LOOP:ZF=0,有键输入,结朿延时JBLOOP_OUT;复制自己从0:7C00H到0:600HCLOSE_LOOP:MOVAX,CS;设置段地址MOVES,AXMOVDS,AXMOVex,0100H;复制次数为100H次MOVDI,600H;设置目的开始地址MOVSI,7C00
5、H;设置源开始地址REPMOVSW;每次复制2字节DBOEAH:跳转到复制结束后的READ_OLD_SECTORDWPOS2-POS1+600H,0READ_OLD_SECTOR:P0S2EQU$MOVAX,0201HMOVBX,7C00HMOVCX,3MOVDX,80H;跳转到0:7C00H;填充多余空间;定义引导标志INT13HDBOEAHDW7C00H,0DB16AHDUP('V*)DW0AA55H.EXIT0END根据以上代码还可以学习到,JMP指令的一种特殊用法,不直接使用JMP,而是使用其机器码0EAH后加跳转地址的办法。大
6、家可以试验一下,能否使用JMPPOS2-POS1+600H代替,或者将指令修改为JMPREAD_OLD_SECTOR?将有效程序段填充为512字节长度,让引导标志0AA55H正好位于扇区的最后。这里用16AH个字符V來填充。可通过如图2J0所示的方法进行观察。图2-10观察填充数据注释:能否在显示字符串时使用DOS的中断功能?上面的程序能否在DOS下直接执行?答案是否定的。1.实现步骤(1)准备系统盘选择一张软盘,在DOS下执行FormatA:/S,表示格式化软盘且向它复制DOS系统文件。(2)备份主引导扇区数据到软盘可以编写一个程序实
7、现,也可以用Debug实现。这样做的目的是,万一系统崩溃了,述可以用软盘启动恢复。如果用Debug,步骤如下:①建立一个文件,如ddd.txt,随便输入儿个字母,如aaaaaaaaaaaaaao②使用命令Debugddd.txt将该文件装载到内存。使用命令d可以看到,文件在内存屮位置为126C:0100H〜126C:010DH,如图2・11所示。MS-DOS方式-DEBUGI自动囹
8、窗
9、曰
10、Aj阪C:>debug-d126C:0100126C:0110126C:0120126C:0130126C:0140126C:O15O126C:0
11、160126C:0170ddd・txtOOOA000144EA・・<・U・・・・4・[・W2…Q・・・・<・t^<"u・・・U・・・・t・:・・・t・«t・V$U・N・Y^hi^j.D.t<・t…工二土・Y