如何在Windows软件中跳转到指定扇区?

如何在Windows软件中跳转到指定扇区?,第1张

文件的 *** 作,由Windows自己指定,无需用户关心。如果非要到指定扇区读写,那就需要直接读取举高磁盘了,这需要突破Windows的管理限制,只有极特殊的软件能够实现,比如WinHex等。

直接对磁盘扇区 *** 作,一旦出现错渣兆误,可能整套系统就完蛋了。

既然你这样问,说明你根本就不懂扇区、簇、分区表、柱面等等。直接编辑磁盘,不似Word打字,需要极高的硬件、系统、软件相关知识。就好比,你在地月范围内,想要到冥王如答租星的伴星卡绒上挖地瓜。

winhex怎么搜索文件名 *** 作方法:可以查找和替换文本或Hex值。选择搜索菜单中的联合搜索项,d梁空裂出搜索对话框,先输入该文件要搜索的十六进制值选择通配符和搜索的范围就可以开始搜索了。你可以选择在整个文件中搜索,也可选择仅在区块中进行有条件的搜索。而且在Winhex中可以方便的进行定位 *** 作,快速转道新的位置。执行定位菜单亏缺中的标记定位命令,或按Ctrl+L,将鼠标指向需要定位的位置,就可以在当前鼠标所在的位置作上标记,不管你 *** 作到什么地方,按组合键Ctrl+k,就可以返回到标记所在的位置。执行定位菜单中的删除标记命令,可以将所作的标记删除。除了利用标记定位以外,你还可以方便的转到文件的开始和结尾,区块的开始和结尾,行首橡闭和行尾以及页首和页尾。你可以自己试一试,相信你很快就知道了。

1、MFT:磁盘上的所有数据都是以文件的形式存储,其中包括元文件。 每个文件都有一个或多个文件记录,每个文件记录占用两个扇区 $MFT元文件就是专门记录每个文件的文件记录。 其中第五个圆埋姿目录是根目录的文件记录。 第一个目录是MFT本身的文件记录。

2、簇号: NTFS文件系统使用逻辑簇号(LCN)和虚拟簇号(VCN)对分区进行管理。 逻辑簇号:既对分区内的第一个簇到最后一个簇进行编号,NTFS使用逻辑簇号对簇进行定位。 虚拟簇号:既将文件所占用的簇从开头到尾进行编号的,虚拟簇号不要求在物理上是连续的。

3、索引项:每个文件在目录中有其索引项。结构如图:其中文件的MFT索引号(3个字节)是我们需要的,是虚拟索引号,是相对的。

4、属性

文件记录由两部分构成,一部分橘绝是文件记录头,另一部分是属性列表

10H类型属性它包含文件的一些基本信息

20H类型属性既属性列表,当一个文件需要好几个文件记录时,才会用到20H属性。

30H类型属,该属性用于存储文件名 ,它总是常驻属性。

80H属性 80H属性是文件数据属性,该属性容纳着文件的内容

5、runlist(在80或者A0属性里面可以找到):

当属性不能存放完数据,系统就会在NTFS数据区域开辟一个空间存放,这个区域是以簇为单位的。

Run List就是记录这个数据区域的起始簇号和大小

举个栗子 31 0C 2C 22 45 其中3表示有3个字节表示这个数据流的开始簇号即 2C 22 45 1表示有1个字节描述这个数据流的大小即0C

当有多个Run List 的时候,都需要计算,并且相加,得到多个数据流。

二、具体实现(为了计算方便(懒),举例本机E盘上的一个140M左右的文件)

(1)选取的是文件12345aa.pdf,大小约140M:

(2)首先借助winhex工具打开可以直接得到其簇号,并且知道它直接位于E盘根目录之下(作为我们定位的验证

(3)大概的流程:

(MFT的结构一般第五个目录就是根目录,并且其一个目录一般都是2个扇区即一个字节,MFT逻辑簇号不是连续的,根目录也是,需要runlist来计算出,它到底有几个数据流,数据流的起始位置和大小分别是多少!)

算出MFT中第五个目录即根目录的扇区位置,转到该扇区得到根目录的runlist

计算出根目录所在的扇区,打开根目录,即可以找到我们的文件pdf

根据它在根目录中的数据找到它在MTF中的索引号,得到MTF中的记录

在MTF中找到它真正的数据流,即可以看到真正的文件内容。(因为大于100M,肯定是非常驻)

(4)用winhex打开我们的磁盘E盘(每个偏移的具体含义参见更加详细的博客)

分析boot文件可以在0DH中得到一个簇有8个扇区的大小。

030-037H是MFT的开始簇号0x00 00 00 00 00 0C 00 00

040-043H是每个MFT记录的大小为0x00 00 00 F6个簇

1C-1FH是隐藏扇区(MBR到DBR) 0x 00 00 10 00簇

(5)计算MFT本身的数据流情况

跳转到MFT的第一个扇区即6291456扇区,在80h属性处得到rundate

33 80 D1 00 00 00 0C 起始簇号786432 大小为53632簇 包括214528个目录项

33 0B C8 00 F5 7E 6F 起始簇号786432+(6F 7E F5)即7306997=8093429 大小为51211簇 包括204844个目录项

33 35 92 00 15 62 38 起始簇号 8093429+(38 62 15)即3695125=11788554 大小为 37429簇 包括149716个目录项

(一个簇8个扇区,2个扇区一个目录项,即一个簇4个目录项)

(6)可以计算得到MFT第五个记录(根目录)所在扇区为6291456+1*5*2=6291466 跳到这个扇区 找到其中的索引属性A0x,得到两个液橘run data 41 05 62 C1 81 01 和 41 01

计算的第一个起始簇号为25280866,第二个起始簇号为1

(7)转到扇区25280866*8扇区得到根目录的扇区:利用winhex验证正确

(8)在根目录下找到我们的文件12345aa.pdf 如下(查找文件名)

(9计算出文件的MFT索引号为085EC4,为548548项。

(10)下面有两种方式找到MFT中的目录项:

(1)使用虚拟簇号,打开MFT,计算偏移为217B1000,跳转得到12345aa.pdf的目录

(2)使用逻辑簇号,根据上面分析的,可知MFT分为了3块,

因为548548>214528+204844 个目录项 ,所以我们的文件在第三块MFT表中

其簇号=(548548-214528-204844)/4+11788554(第三块MFT起始簇号)=11820848号

跳转到其簇号得到文件的目录项

(11)读其80H属性得到其run date为43 20 87 00 3C 7A C0 00 数据流起始位置为12614204簇,与我们直接用工具在右侧看到的簇号相同,转到该簇得到文件内容

(12)定位成功,有子文件夹的参考上门步骤重复计算到最后一个子文件夹就可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12273807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存