基于元神操作系统实现NTFS文件操作(四)

1. 背景

本文主要介绍$Root元文件的读取,并提供了基于元神操作系统的实现代码。$Root元文件中包含了当前分区的根目录下的文件和子目录信息,具体的可以参考相关文档,后续连载文章中也会逐步讲解。

2. 方法

(1)定位$Root元文件

在DBR内容的偏移0x30处可以得到$MFT元文件的起始簇号,在偏移0x0D处可以得到每簇扇区数,将这两个值相乘即可得到$MFT元文件的起始扇区号。最后,再加上目标分区的起始地址,就得到了$MFT元文件在磁盘上的扇区号,也就是定位$MFT元文件所需要的内容。

$MFT元文件有很多,其前16个是固定的。5号元文件就是$Root元文件,该元文件中存放着根目录文件,用于管理根目录,也是本文的目标。其它的元文件可以参考相关的文档,0号元文件是$MFT,1号元文件是$MFTMirr,2号元文件是$LogFile,3号元文件是$Volume,4号元文件是$AttrDef,6号元文件是$Bitmap,7号元文件是$Boot,8号元文件是$BadClus。

每个元文件占用2个扇区,即1KB内容。所以,在$MFT元文件的起始扇区号上加10,得到的便是5号元文件$Root的起始扇区号,也就是本文定位和读取$Root所需要的内容。

(2)调用元神操作系统的API读取$Root元文件

先用API_ALLOC_MEMORY调用元神操作系统的API来分配内存,用于存放元文件的内容,该操作实现在mem_alloc函数中。然后定位到$Root元文件并用API_READ_DISK_SECTOR调用元神操作系统的API两次来读取$Root元文件的内容,该操作实现在read_disk_root函数中。最后&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

De-Chang Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值