lzhongh 发表于 2012-3-1 12:05:05

关于NTFS文件系统中RUN的问题

在NTFS系统中,如果有多个RUN,第一个RUN的开始簇在后面RUN的开始簇的后面,这时如何按照确定第二个RUN的开始簇?例如:31 02 52 21 11 21 01 55 33 21 02 50 22,第二个RUN的开始簇如何确定?

nhqwsj 发表于 2012-3-1 12:28:32

31 02 52 21 11 21 01 55 33 21 02 50 22
31中的1代表大小,3代表开始簇,那么后面一共有4位,02是大小,52 21 11是开始簇;那么这里一共有3个run :31 02 5221 11 ,21 01 55 33, 21 02 50 22.

lzhongh 发表于 2012-3-1 18:29:35

谢谢你的解释,但我问的是第二个RUN的开始簇是如何计算的?不知你是否看过刘伟老师的《数据恢复技术深度揭秘》这本书,在本书的354页的一个例子中的RUN计算,是如何计算的?他书中的RUN是这样的“31 08 9B 10 03 21 08 77 CA 21 08 45 01 21 08 9B 03 21 10 F0 20 21 08 0E 05”6个RUN,第一个RUN的起始LCN是200859,而第二个RUN的LCN=200859-13705=187154,第三个RUN的LCN=187154+325=187479,第四个RUN的LCN=.........后面的没有问题,关键是第二个RUN计算中的13705是什么?

lzhongh 发表于 2012-3-1 20:46:23

nhqwsj 说是因为第二个RUN的77 CA是-13705所致,怎么能判断出是负数啊?只能在Winhex 的“数据解释器”中看出来吗?也就是如何判断是正数还是负数?

心友堂 发表于 2012-3-1 23:14:29

因为数据在硬盘中是补码二进制的形式存储的,比如原码是—7,那么它在硬盘中的存储就是11111001

心友堂 发表于 2012-3-1 23:15:27

我在你另外一个帖子中回复了,才看到你这个帖子是更早开的,还讨论起来了

心友堂 发表于 2012-3-1 23:20:12

回复 4# lzhongh
书本表格中的计算,其实全部都是把补码转为原码,进行相加 得出结果的。我就是这样理解的
因为正数转为原码,其实就是本身,所以不用另外计算补码而已
但是负数转为原码,就需要转换了,再进行相加计算。

心友堂 发表于 2012-3-1 23:26:22

回复 4# lzhongh
数据编辑器可以看出来,就是16bit那个。。。

屯中小鸟 发表于 2012-4-19 13:55:07

一个都看不懂啊   哈哈~~

数据重现55 发表于 2016-3-28 11:47:36

问题很好,值得研究下
页: [1] 2
查看完整版本: 关于NTFS文件系统中RUN的问题