weolar
驱动牛犊
驱动牛犊
  • 注册日期2007-05-14
  • 最后登录2012-11-30
  • 粉丝1
  • 关注0
  • 积分48分
  • 威望445点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分1分
阅读:3231回复:5

完整可编译NT4's NTFS小规模修改工程

楼主#
更多 发布于:2009-06-01 09:33
附件见:http://bbs.pediy.com/showthread.php?p=634050
大家知道,文件系统在操作系统中应该属于比较独立的一块,只需要提供相应接口给上层使用。
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特有的功能也支持的好好的
 

图片:3.jpg

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2009-06-01 09:59
看雪的附件下载太差了,本地转一份,基本上没动,中介合并压缩包,删除不需要的pdb文件。
附件名称/大小 下载次数 最后更新
MyNtfs.rar (8081KB)  132 2009-06-01 10:04
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
wanynal
驱动牛犊
驱动牛犊
  • 注册日期2007-07-26
  • 最后登录2011-03-03
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-06-10 13:49
谢了
hyjtlyra2009
驱动牛犊
驱动牛犊
  • 注册日期2008-09-10
  • 最后登录2010-07-22
  • 粉丝6
  • 关注0
  • 积分2分
  • 威望323点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分10分
地板#
发布于:2009-06-10 17:04
不错的资料和思路~
洗鉴宏宇 兼济豢龙
zhangguangkai
驱动牛犊
驱动牛犊
  • 注册日期2008-09-06
  • 最后登录2010-10-30
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望336点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-06-10 22:11
硬连接不是NTFS特有的功能,我们做的文件系统里面也实现了这个-_-!!!
dreamsity
驱动小牛
驱动小牛
  • 注册日期2006-09-01
  • 最后登录2013-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望821点
  • 贡献值1点
  • 好评度68点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2009-06-22 06:44
呵呵。非常感谢。看到好东西了。
一切都是时间问题!
游客

返回顶部