2023-2-24-病毒学习笔记~文件系统
病毒前置:文件系统相关的学习笔记
硬盘的物理结构
低级格式化
低级格式化的主要目的是将盘面划分成磁道、扇区和柱面
文件系统
基本INT 13H调用
-
BIOS INT 13H调用是BIOS提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和软盘)的复位、读写、校验、定位、诊断、格式化等功能,完全不用考虑被操作硬盘安装的是什么操作系统
-
它使用的就是CHS寻址方式
-
最大只能访问8GB左右的硬盘
Fat12
Fat12的格式
-
引导扇区:记录磁盘和文件系统相关的各种参数,比如扇区大小,一簇的扇区数等(一个扇区大小)
-
Fat扇区:记录已分配的扇区和可用扇区,并通过链表依序记录一个文件的全部扇区(默认九个扇区大小
-
)
-
根目录区(长度不固定):记录根目录文件项的表,文件项包括文件,目录。通过它可以查找到根目录下的文件和目录信息,比名称,大小,日期等
-
数据区(长度不固定):用户数据(文件和子目录文件)存放的地方
-
*缺省有两个fat,1个fat9个扇区,引导扇区1个扇区,根目录区有224条记录(一个记录32字节),这些参数都都可以在引导扇区的引导记录中设定
Fat表的格式
Fat表开始3个字节没用于用户文件分配,3字节有2组12bits所以,占用了0,1两个簇号。用户的数据从簇2开始分配。
Fat表从头开始按3字节分成一组,一组中第2字节的低半字节作为最高半字节和一组中第1字节组成整数表示一个簇号,第2字节的高半字节作为最低半字节和第3字节组成整数表示一个簇号。
名称 | 偏移 | 长度 | 内容 | 软盘参考值 |
BS_jmpBoot | 0 | 3 | jmp LABEL_START nop | |
BS_OEMName | 3 | 8 | 厂商名 | ‘ForrestY’ |
BPB_BytsPerSec | 11 | 2 | 每扇区字节数 | 0x200(即十进制512) |
BPB_SecPerClus | 13 | 1 | 每簇扇区数 | 0x01 |
BPB_RsvdSecCnt | 14 | 2 | Boot记录占用多少扇区 | 0x01 |
BPB_NumFATs | 16 | 1 | 共有多少FAT表 | 0x02 |
BPB_RootEntCnt | 17 | 2 | 根目录文件数最大值(多少个32字节目录项) | 0xE0 (224) |
BPB_TotSec16 | 19 | 2 | 扇区总数 | 0xB40(2880) |
BPB_Media | 21 | 1 | 介质描述符 | 0xF0 |
BPB_FATSz16 | 22 | 2 | 每FAT扇区数 | 0x09 |
BPB_SecPerTrk | 24 | 2 | 每磁道扇区数 | 0x12 |
BPB_NumHeads | 26 | 2 | 磁头数 | 0x02 |
BPB_HiddSec | 28 | 4 | 隐藏扇区数 | 0 |
BPB_TotSec32 | 32 | 4 | 如果BPB_TotSec16是0,由这个值记录扇区数 | 0xB40(2880) |
BS_DrvNum | 36 | 1 | 中断13的驱动器号 | 0 |
BS_Reserved1 | 37 | 1 | 未使用 | 0 |
BS_BootSig | 38 | 1 | 扩展引导标记 | 0x29 |
BS_VolD | 39 | 4 | 卷序列号 | 0 |
BS_VolLab | 43 | 11 | 卷标 | ‘OrangeS0.02’ |
BS_FileSysType | 54 | 8 | 文件系统类型 | ‘FAT12’ |
引导代码 | 62 | 448 | 引导代码、数据及其他填充字符等 | |
结束标志 | 510 | 2 | 0xAA55 |
名称 | 偏移 | 长度 | 描述 |
DIR_Name | 0 | 0xB | 文件名8字节,扩展名3字节 |
DIR_Attr | 0xB | 1 | 文件属性 |
保留 | 0xC | 10 | |
DIR_WrtTime | 0x16 | 2 | 最后修改时间 |
DIR_WrtDate | 0x18 | 2 | 最后修改日期 |
DIR_FstClus | 0x1A | 2 | 此条目对应的开始簇号 |
DIR_FileSize | 0x1C | 4 | 文件大小 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Blognotus!
评论