首页
社区
课程
招聘
[原创]六一献小礼:完整可编译NT4's NTFS源码(可稳定替换xp原版ntfs.sys)
发表于: 2009-6-1 08:59 71526

[原创]六一献小礼:完整可编译NT4's NTFS源码(可稳定替换xp原版ntfs.sys)

2009-6-1 08:59
71526

·   
(首先感谢珠海的同事,给了我很多学习的好机会~)
write by http://hi.baidu.com/weolar/blog
大家知道,文件系统在操作系统中应该属于比较独立的一块,只需要提供相应接口给上层使用。
Windows的NTFS文件系统也是一样,
在实际编程中,Windows以dispatch routing的形式为上层的io管理器、缓存管理器等提供读写的接口,
甚至文件系统本身的缺页中断也是通过其自身的读写例程来实现换页操作。
所以在设计上,其相对的独立性为我们“山寨”其驱动提供了不少方便。
  相信大家也都看过NT4的NTFS源码。
可那份 源码与现在WIN 5.1下的相差甚远(NT4应该写于91年)。
但由于文件系统的独立性,使我想到也许NTFS自身结构的变化也许并不妨碍它的移植。
事实证明也是如此,我将NT4的代码扣出后,只经过少许修改,便能成功运行在XP下,这也许对广大操作系统爱好者能提供不小的便捷吧~

  本来以为想移植到xp中会有不少困难,
但实际过程中,我只是修改了很小一部分。
其中包括read 操作的一个死锁bug。这个bug的起因是:
NtfsCommonRead 中如果是pageio的时候,
且是异步read,MS忘记把锁放进完成函数的context里了。即无处释放这个锁。
  另外NT4的代码少了NtfsFsdPnp例程。
这个例程在NtCreatePagingFile-》PpPagePathAssign中会调用。
本来我想参照xp的,不过似乎没成功,所以干脆直接返回STATUS_SUCCESS,
貌似也没啥大问题,也能成功换页~
  其他方面,NTFS的文件结构啥的,
基本无需修改。所以各位可以尽管鄙视我,毕竟我没做啥大改动,
就拿这么个题目来哗众取宠。不过我觉得比那个啥淫cracker(yingcracker)好点吧,
这娃直接把我的ksbinsword改个标题就说是他的了

  至于这个可源码调试的NTFS有啥用,我想不必多说了吧,
比如你想研究怎么强行删除文件,调试一下NtfsDeleteFile就知道了。
有了代码方便很多!想看哪个结构就看哪个结构。或者你还可以改动一下,想隐藏哪个文件就隐藏哪个文件。
附件中的sys不能直接运行,因为入口函数有int 3断点
下面是截图:
可以看出硬链接等NTFS特有的功能也支持的好好的

uneshell.org帐号:u10365n


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (107)
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
2
支持 一 个
2009-6-1 09:01
0
雪    币: 7146
活跃值: (3731)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asd
3
占 领 二 楼
2009-6-1 09:02
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Good job!
2009-6-1 09:09
0
雪    币: 116
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
很好!学习一下!
2009-6-1 09:10
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持一下,太强大了,有问题了再向你请教,呵呵
2009-6-1 09:16
0
雪    币: 177
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
顺道bs一下那个淫cracker
2009-6-1 09:19
0
雪    币: 63
活跃值: (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
支持一下。。。
2009-6-1 09:21
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
盟主大神果然发布了,顶后下载,下载后学习。
2009-6-1 09:22
0
雪    币: 211
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
支持 六一快乐
2009-6-1 09:26
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
11
有码有真相~
2009-6-1 09:39
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
12
不好意思让大家失望了,我没改动啥东西,只是扣出来稍微修改了下能在xp下运行
2009-6-1 09:41
0
雪    币: 258
活跃值: (16)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
so good!
2009-6-1 10:10
0
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
顶一下,不懂.
2009-6-1 10:11
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
盟主很强大
2009-6-1 10:36
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
星际盟主牛,好厉害!
2009-6-1 10:38
0
雪    币: 244
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
可算是出来了。
2009-6-1 10:43
0
雪    币: 564
活跃值: (42)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
18
顶一下...........
2009-6-1 10:43
0
雪    币: 66
活跃值: (960)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19


强烈支持
2009-6-1 10:48
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
20
  6.1 的这个礼物最满意了。
2009-6-1 11:08
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
LZ太强大了,想请教一下...

在NtfsCommonRead里面好像都没对CCB进行非空检查, 所以当Read请求里想查询一下文件信息时就很可能会递归到一个NonCache的Read里面, 这时遇到FO->FsContex2为空的就蓝定了.

对于这个现象我一直想不通...这只是故意设计的吗... 请教weolar大大是怎么看法?
2009-6-1 11:09
0
雪    币: 364
活跃值: (152)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
22
你说的可能也是个NT4的bug!感谢指正!我再看看。反正NT4的代码里有不少要改的。我这个只是初步改了下,能跑起来而已。
2009-6-1 11:21
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
23
跟进了膜拜学习
2009-6-1 11:32
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
盟主就是盟主,带领大家创江湖
2009-6-1 11:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
妥妥帖帖忐忐忑忑
2009-6-1 11:40
0
游客
登录 | 注册 方可回帖
返回
//