本帖最后由 天堂雨 于 2023-7-28 19:00 编辑
修订分区引导记录DBR
因为EXFAT分区前24扇区保留分区重要信息,现需手工重建. 其中第0扇区记录分区的基本信息,用WINHEX的模板查看和修改, 第1扇区至第8扇区仅在最后有55AA结束标记 第9扇区至第10扇区全0填充 第11扇区为校验码扇区,是4字节的前11扇区的校验码,其中分区参数的6AH(106)、6BH(107)两字节为分区卷标记,70H(112)分区卷不参与计算校验码。 使用WINHEX的脚本计算校验码
- // 此文件用于计算 EXFAT 前11个扇区除106-106(磁盘标记2字节)和112磁盘使用百分比1字节之外的校验和
- //指定打开的驱动器,要选择正确的EXFAT所在分区的盘符驱动器!!!!
- Open :?
- Assign Checksum 0
- Assign BytesPerSector (512)
- Assign NumberOfBytes (BytesPerSector*11)
- MessageBox NumberOfBytes
- Assign Index 0
- Assign one_byte 0
- {
- IfEqual 106 Index
- Inc Index
- EndIf
- IfEqual 107 Index
- Inc Index
- EndIf
- IfEqual 112 Index
- Inc Index
- EndIf
- Assign hight_bit 0
- IfEqual (Checksum&1) 1
- Assign hight_bit 0x00000080
- EndIf
- Goto Index
- Read one_byte 1
- Assign Checksum (hight_bit+Checksum/2+one_byte)
- IfEqual (NumberOfBytes-1) Index
- ExitLoop
- EndIf
- Inc Index
- }[unlimited]
- MessageBox Checksum
- //将校验和写入第11个扇区,校验和4字节,共计写512/4次
- Assign START_POS (512*11)
- Assign nums (512/4)
- Goto START_POS
- {
- Write Checksum
- }[nums]
- //将校验和写入第23个扇区,校验和4字节,共计写512/4次
- Assign START_POS (512*23)
- Assign nums (512/4)
- Goto START_POS
- {
- Write Checksum
- }[nums]
- //记得保存,修改才能生效
- //Save
复制代码 代码见上文,愿意友情支持积分的请付费下载.
将上述代码保存为DBR_boot_sector_checksum.whs放到winhex所在目录也是可以的
|