首先本文的框架在于FAT16之下,在FAT32的框架下WINHEX甚至都找不到主引导区,我也未证实FAT1和FAT32的具体区别在哪。
SD卡结构如上图所示:
首先找到主引导区,这个很好找,因为物理扇区序列为0就是了,主引导区有以下数据如下图:
其中分区表的第一部分如下图所示:
从以上图我们可以看到物理扇区序号和逻辑扇区序号的关系。
所以我们可以找到逻辑扇区号为0的扇区了(需要注意的是,扇区读取函数的扇区号都是以物理扇区号为准)即所谓分区启动部分的扇区数据。
启动扇区有很多有用的数据如下图所示:
以上为可用数据,标红的数据为用于计算根目录的位置:
根目录的扇区位置=保留扇区数(0x01个) + 隐藏数(135个)+2* FAT表宽度(236*2)=608
根目录中的数据以32个字节为一组当作存