首页
论坛
课程
招聘
[原创]NTFS解析?仅仅解析
2009-3-23 19:53 11190

[原创]NTFS解析?仅仅解析

2009-3-23 19:53
11190
这里不想多说,以免误导别人.
资料:
1,

ReactOS代码(drivers\filesystem\ntfs\)

2,

这里提下在ReactOS下的drivers\filesystem\ntfs\note.txt中提到的资料不错的说...

note.txt

/*

These are notes about the NT filesystem

More documentation is available at:
http://linux-ntfs.sourceforge.net/ntfs/index.html

*/
就是这里:
http://sourceforge.net/project/showfiles.php?group_id=13956&package_id=16543

3,

还有是NT源码
nt4\private\ntos\cntfs\ntfs.h

4,

一个哥们写的<用Winhex手工定位NTFS文件系统下的文件>,好呀,不过文中的16进制和10进制有些不分,总之很好的资料的说...

5,

<NTFS文件解析系统的简单分析> by:MTrickster

学习过程中写的一个历遍全盘文件的测试的代码:
(注:代码不全,仅仅解析了A0和90属性,其他掠过,详细删除,新建的见MFC版本(还没写完),
将文件解析的代码整成NTFSFindFirstFile和NTFSFindNextFile的主意不错,赞一个)

看雪社区年底排行榜,查查你的排名?

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (22)
雪    币: 257
活跃值: 活跃值 (25)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
zjjmjtoot 活跃值 4 2009-3-24 08:41
2
0
这东西肯定不错,先下来看看。
雪    币: 250
活跃值: 活跃值 (32)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
weolar 活跃值 10 2009-3-24 09:02
3
0
哎,晚了一步,本来我也想发一个的……感谢分享~
雪    币: 161
活跃值: 活跃值 (15)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
thinkSJ 活跃值 4 2009-3-24 09:09
4
0
这东西肯定不错, 收藏一份.
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
家有睡神 活跃值 2009-3-24 12:32
5
0
http://www.ntfs.com/
有关于ntfs,fat,winfs的资料,值得学习
雪    币: 173
活跃值: 活跃值 (134)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
执着我一生 活跃值 2009-3-24 21:41
6
0
感谢分享,好好学习一下!
雪    币: 102
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
scdeny 活跃值 2 2009-4-17 09:19
7
0
试了一下,貌似不能解析完所有文件,郁闷
雪    币: 42
活跃值: 活跃值 (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
nevergone 活跃值 3 2009-4-17 09:41
8
0
解析有问题
没有处理USA
套用某个牛人的话:总有一天会出错的
雪    币: 459
活跃值: 活跃值 (38)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
qihoocom 活跃值 9 2009-4-17 11:40
9
0
USA很重要啊~没处理USA的根本没法看吧
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sudaxx 活跃值 2009-4-17 12:17
10
0
USA中的USN标记了写入磁盘的次数.
若没有处理,读的时候没问题,当有数据写入磁盘时就会出现某些问题.
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sudaxx 活跃值 2009-4-17 12:18
11
0
所以 读写操作,都得更新USA...
雪    币: 42
活跃值: 活跃值 (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
nevergone 活跃值 3 2009-4-17 13:22
12
0
读的时候要回填的
雪    币: 102
活跃值: 活跃值 (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
scdeny 活跃值 2 2009-4-17 20:03
13
0
楼主做的很不错啊,能够拿出来分享就比其他人做的好,谢谢你的代码,省了我不少事,对了,你的RunCount没有用上,需要加个循环,把连续的几个簇都读出来,才能解析完所有的INDX文件,试了一下,加上之后就可以找到盘上的所有文件了。
加油!期待你的MFC版
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bmjzw 活跃值 2009-5-5 21:30
14
0
感谢分享,好好学习一下!
雪    币: 100
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
perlish 活跃值 2009-5-6 09:49
15
0
不错的东西,收下了,谢谢楼主
雪    币: 1267
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
suiyu 活跃值 2009-5-6 11:48
16
0
学习,支持,然后下载。reactos和windows兼容,确实不错
雪    币: 212
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
treeyan 活跃值 2009-5-6 14:51
17
0
呵呵,辛苦楼主,支持
以前为了在realmode上完成ntfs文件建立,费了不少劲,资料也少.被B+树弄得头晕脑涨的
雪    币: 91
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
垃圾一个 活跃值 2009-5-6 19:24
18
0
学习下。!!!!!!!!!!1
雪    币: 437
活跃值: 活跃值 (231)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xss 活跃值 4 2009-5-6 19:38
19
0
果然NT4的源代码不错
雪    币: 306
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小原 活跃值 2009-8-2 20:19
20
0
USA啊USA
雪    币: 441
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
叶xiang 活跃值 2009-11-17 14:39
21
0
感谢了,下载看看
雪    币: 514
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xacker 活跃值 1 2009-12-4 09:14
22
0
顶  
希望有更多关于文件系统解析的相关资料
雪    币: 225
活跃值: 活跃值 (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mtvwr 活跃值 2009-12-6 23:25
23
0
楼主的有一个比较大的逻辑错误,就是这小段代码:
//
                                        // 循环分析FileRecord,采用递归
                                        // 接下来是计算FileRecord的位置
                                        // 一个MFT记录占两个扇区一个扇区512字节
                                        //

                                        if ( szFileName[0] != '.' )
                                        {
                                       
                                                LARGE_INTEGER   ulFileRecord;
                                       
                                                ulFileRecord.QuadPart = m_FirstMFTLocation.QuadPart + \
                                                        (((pIndexEntry->Form.FileReference.SegmentNumberHighPart << 16) + \
                                                        pIndexEntry->Form.FileReference.SegmentNumberLowPart ) * 2 * 512 );

其实你这段代码就是根据文件记录号来寻找文件记录的位置,对吧?在我的电脑有的文件解析不到,但是WinHex却能解析的很正确.
我的系统是XP SP3,C盘有20G(系统盘),我在system32目录下建了一个扩展名为.txt文件,文件数据只有9个字节,我调试你的程序时得到的文件记录号是0x94C6,我C盘的第一个文件记录的位置在:0x8EBD2000如果按照你的上面代码来计算的话,那么文件记录的位置应该在:0x94C6*1024+0x8EBD2000=0x91103800的地方(pIndexEntry->Form.FileReference.SegmentNumberHighPart << 16这个表达是在我调试时都是0),但是WinHex解析的位置却在0x9B008800的地方,我在你程序计算得到的位置只找一乱七八糟的数据(反正不是文件记录,因为没找到FILE的文件记录的标志).好象所有的文件记录在磁盘上并不是连续存储的,如果这样的话,你的程序就不能正确的工作......其实,开始你的程序工作的都很出色,从根目录解析到Windows目录,再解析system32目录都没有错,就是解析到我创建的那个文件时却出错了.在我电脑上,从0x94C6之后的文件记录所代表的文件,你的程序一个也没解析出来.

当然我并没有任何谴责楼主的意思,楼主能拿出来让大家学习说明楼主很有共享精神,象我这样的菜鸟是十分感谢的,我只是希望大家看我的帖子之后能找到一个正确的方法来解析文件记录的位置.

希望大家看到我的帖子之后能讨论一下..........
游客
登录 | 注册 方可回帖
返回