4章节 计算机病毒寄生环境分析
第4章 计算机病毒寄生环境分析;4.7 系统的启动与加载4.8 BIOS与DOS的中断4.9 计算机病毒与系统安全漏洞习题;主引导扇区,或称为主引导记录(MBR)是物理硬盘的第一个扇区,其位置在硬盘的0柱面0磁头1扇区。MBR中包含了主引导程序和硬盘分区表。当MBR中感染病毒后,病毒程序将替代主引导程序,原来的主引导程序通常被转移到其他地方。;基于DOS的主引导扇区包含经典的主引导程序,具有最好的兼容性,可在各种DOS和Windows版本正常工作。如果主引导扇区感染了病毒,可以使用基于DOS的主引导程序覆盖之,可消除病毒。可以使用DEBUG编写一段小程序来读出主引导扇区,程序如下:;-U 100138A:0100 B80102 MOVAX,0201;读1个扇区138A:0103 BB007C MOVBX,7C00;读到当前段的7C00处138A:0106 B90100 MOVCX,0001;0柱面1扇区138A:0109 BA8000 MOVDX,0080;第一个物理硬盘0磁头138A:010C CD13INT 13;读盘中断调用138A:010E CCINT 3-某物理硬盘的主引导扇区的内容如图4.1所示。;
图4.1 经典主引导扇区数据;从图4.1中可以看出,主引导程序范围在7C00~7C8A,接着是数据区。中间有很大一部分数据是00。7DBE至7DFD之间为4个分区表,每个分区表占用16B。图4.1中只有一个分区表有数据,其余3个全为00。主引导扇区最后两个字节55AA是已分区的标志。分区表的16B数据结构如表4.1(见书95页)所示。可以从图4.1中的程序区(00~8A)反汇编出主引导程序如下:;-U7C007C8A138A:7C00FACLI;关中断138A:7C0133C0XORAX,AX138A:7C038ED0MOVSS,AX138A:7C05BC007C MOV SP,7C00 ;设置堆栈到0:7C00138A:7C088BF4MOVSI,SP138A:7C0A 50PUSHAX138A:7C0B 07POPES;设置ES、DS段为0138A:7C0C 50PUSHAX138A:7C0D1FPOPDS138A:7C0EFBSTI;开中断138A:7C0FFCCLD138A:7C10BF0006MOVDI,0600;138A:7C13B90001MOVCX,0100138A:7C16F2REPNZ;把主引导扇区从内存0:7C00转移到0:0600138A:7C17A5MOVSW138A:7C18EA1D060000JMP0000:061D;跳转到0:061D继续执行(转移后的下一条指令执行)138A:7C1DBEBE07MOVSI,07BE;指向第一个硬盘分区表138A:7C20B304MOVBL,04;设置分区表总个数为4138A:7C22803C80 CMP BYTE PTR [SI],80;测试分区是否活动138A:7C25740EJZ 7C35;是活动分区转移138A:7C27803C00 CMP BYTE PTR [SI],00138A:7C2A751CJNZ 7C48;分区表标志非法转移138A:7C2C83C610 ADDSI,+10;指向下一个分区表138A:7C2FFECBDEC BL;138A:7C3175EFJNZ 7C22;没有检查完,从头继续检查下一个分区表138A:7C33CD18INT 18;没有找到活动分区,则寻找其他引导设备138A:7C358B14MOVDX, [SI];将活动分区首扇区地址放入DX和CX中138A:7C378B4C02MOV CX, [SI+02]138A:7C3A8BEEMOVBP,SI138A:7C3C83C610 ADD SI,+10;指向活动分区表之后的分区表138A:7C3FFECBDEC BL138A:7C41741AJZ7C5D;4个分区表检查完转移138A:7C43803C00 CMP BYTE PTR [SI],00;检查后续分区表标志字节是否合法;138A:7C4674F4JZ 7C3C;分区表标志合法,则继续138A:7C48BE8B06 MOV SI,068B;非法分区表则给出提示“Invalid partition table.”1