首页
社区
课程
招聘
[原创]NTFS解析?仅仅解析
发表于: 2009-3-23 19:53 13081

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

2009-3-23 19:53
13081

这里不想多说,以免误导别人.
资料:
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的主意不错,赞一个)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (22)
雪    币: 299
活跃值: (25)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
2
这东西肯定不错,先下来看看。
2009-3-24 08:41
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
3
哎,晚了一步,本来我也想发一个的……感谢分享~
2009-3-24 09:02
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
这东西肯定不错, 收藏一份.
2009-3-24 09:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
http://www.ntfs.com/
有关于ntfs,fat,winfs的资料,值得学习
2009-3-24 12:32
0
雪    币: 1956
活跃值: (1105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享,好好学习一下!
2009-3-24 21:41
0
雪    币: 90
活跃值: (143)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
试了一下,貌似不能解析完所有文件,郁闷
2009-4-17 09:19
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
解析有问题
没有处理USA
套用某个牛人的话:总有一天会出错的
2009-4-17 09:41
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
9
USA很重要啊~没处理USA的根本没法看吧
2009-4-17 11:40
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
USA中的USN标记了写入磁盘的次数.
若没有处理,读的时候没问题,当有数据写入磁盘时就会出现某些问题.
2009-4-17 12:17
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
所以 读写操作,都得更新USA...
2009-4-17 12:18
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
读的时候要回填的
2009-4-17 13:22
0
雪    币: 90
活跃值: (143)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
楼主做的很不错啊,能够拿出来分享就比其他人做的好,谢谢你的代码,省了我不少事,对了,你的RunCount没有用上,需要加个循环,把连续的几个簇都读出来,才能解析完所有的INDX文件,试了一下,加上之后就可以找到盘上的所有文件了。
加油!期待你的MFC版
2009-4-17 20:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
感谢分享,好好学习一下!
2009-5-5 21:30
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
不错的东西,收下了,谢谢楼主
2009-5-6 09:49
0
雪    币: 1283
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
16
学习,支持,然后下载。reactos和windows兼容,确实不错
2009-5-6 11:48
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
呵呵,辛苦楼主,支持
以前为了在realmode上完成ntfs文件建立,费了不少劲,资料也少.被B+树弄得头晕脑涨的
2009-5-6 14:51
0
雪    币: 91
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习下。!!!!!!!!!!1
2009-5-6 19:24
0
雪    币: 471
活跃值: (4053)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
19
果然NT4的源代码不错
2009-5-6 19:38
0
雪    币: 306
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
USA啊USA
2009-8-2 20:19
0
雪    币: 445
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
感谢了,下载看看
2009-11-17 14:39
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
顶  
希望有更多关于文件系统解析的相关资料
2009-12-4 09:14
0
雪    币: 225
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
楼主的有一个比较大的逻辑错误,就是这小段代码:
//
                                        // 循环分析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之后的文件记录所代表的文件,你的程序一个也没解析出来.

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

希望大家看到我的帖子之后能讨论一下..........
2009-12-6 23:25
0
游客
登录 | 注册 方可回帖
返回
//