首页
社区
课程
招聘
[求助]关于NTFS中写MFT表的问题
发表于: 2009-5-11 13:48 7387

[求助]关于NTFS中写MFT表的问题

2009-5-11 13:48
7387
各位好。最近在研究NTFS文件系统的时候,发现更改MFT文件记录怎么都不能生效。比如说:我在MFT中改了一个文件的文件名,可是在操作系统中查看的时候,文件名还是未改之前的名字。不知道是怎么回事。是不是改MFT表除了修改基本的内容外,还要改一些别的地方才能使修改生效呢?希望有经验的版友告诉我,不胜感激,谢谢!

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
写啥写啊,不知道有CACHE啊?

你再写得天花乱坠,到VISTA也失效了
2009-5-11 13:50
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不太明白你说的意思,什么cache?和这有关系吗?

我的系统重启之后还是不能生效。

另外,我现在做的事情是在Windows的系统上做的,没有移植到VISTA上。

如果有知道原因的版友告诉一声,急,非常感激!
2009-5-11 13:56
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
4
一个文件写入NTFS的时候, 除了MFT外, 还有其它一大堆的地方要改写, 包括目录索引(MFT的Magic为INDX)等等. 直接改MFT的内容, 系统并不会帮你同步到其它的地方. 另外系统本身对磁盘的目录结构会有一个Cache, 你对MFT的修改并不会影响到这个Cache(系统不知道, 就不会去更新, 即使更新, 因为Index没变, 也就不一定会重读MFT), 所以怎么看还是没变.
建议你看看这篇文章, 里面列出了一堆系统处理MFT时相关的结构, 你要修改MFT的内容, 得让系统把这里一串内容都得更新才行.
http://bbs.pediy.com/showthread.php?p=621583
2009-5-11 14:23
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
5
你直接编辑磁盘后,操作系统并不能立即显示出来,因为系统读取写入的时候是会先在缓存中进行的。比如删除一个文件,系统是DeleteFileA --> DeleteFileW --> ntdll.ZwSetInformationFil->(驱动层)nt!NtSetInformationFile->SrSetInformationFile->NtfsNtSetInformationFile->NtfsCommonSetInformationFile
->NtfsSetDispositionInfo ->MmFlushImageSection的路径。可以看出知道最后系统都是删除内存中的映像。直到某个时刻才会在NtfsCommonCleanup中彻底删除磁盘文件。更详细可以看sudami那篇文章。
2009-5-11 14:27
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
6
除了要改一大堆其他的。貌似你还得强刷cache吧。
比如磁盘级删文件,设置该MFT中的某些标志位及一些属性,更改$MFT:$bitmap,填充run data等等。
系统还是不知道,它只晓得cache里面还有。所以要么你重启系统后才会有效果,要么你自己强刷cache。
不过我到目前还不清楚如何去强刷cache。 得跟跟系统是怎么做的才好。。。
2009-5-11 15:09
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
7
有什么强制不强制的,flushbuffersfile
2009-5-11 15:16
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢大家的回复了!我现在做的是直接读取磁盘信息来修改MFT的内容,驱动的相关东西我不是很懂,我想问一下还需要改磁盘上的哪些内容,可否详细告知一下?谢谢!
2009-5-11 15:45
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这样还是可以的
你将ntfs 分区umount 掉, 再来直接改文件名. mft 要改到, index 要改到, 保证 index B+树顺序也不能发生变化,并且不破坏这些记录结构. 然后再 mount起来,就可以看到文件名改变了.
2009-5-11 16:03
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
10
unmount掉太XX了~ 系统卷你能UNMOUNT啊?
2009-5-11 16:06
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
11
飘过,飘过~
2009-5-11 16:16
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
怎么要在系统卷上呢?
只是研究学习,随便弄个NTFS分区搞着玩就好嘛
2009-5-11 16:17
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
不是系统卷,只是一个普通的NTFS分区。但是还是希望能做得通用一点儿。
2009-5-11 16:28
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
又看到4楼的牛人。在vista以后写扇区,要用驱动。
2009-5-11 21:11
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
能做点事的一般都是在系统卷,

不知楼主改名改好了没有,搞好了供大家学习下
2009-8-26 16:31
0
游客
登录 | 注册 方可回帖
返回
//