piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:11850回复:28

关于Linux文件系统和过滤器驱动程序

楼主#
更多 发布于:2001-12-20 03:28
本人曾写过一个贴子是关于分层驱动程序的,但没有回音。经过我查找一些相关资料发现在Linux下是可以实现类似于NT下的过滤器驱动程序的。方法是Stackable File System,即通过编写一个文件系统驱动程序来截获系统和硬件设备之间的通讯。在Linux中,系统把硬件设备也看做是文件,即Device File,所以可以通过文件系统来截获信息。我已经实现了一个小例子,确实可以做到。希望有兴趣的朋友可以加入讨论。

最新喜欢:

LeopardLeopar...
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-21 21:55
以前老板也要偶做LINUX下的硬盘保护,研究了几个月,能够拦住了,可是就是不知道该怎么写盘,放弃了!现在也换单位了,想起原来的公司就来气,台湾的老板真他妈的坏!以后偶不会去台湾人开的公司了,有空自己写共享软件!嘻嘻
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-21 21:56
不知道你拦截的层次是在文件系统之上还是之下呢?是硬盘之上还是之下呢?
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-12-21 21:57
在请问一下你拦截的是linux系统调用吗?
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-12-21 22:10
在Linux中有一个VFS,也就是Virtual File System,它负责所有底层文件系统的工作。所谓的底层文件系统就是真正的文件系统驱动程序如EXT2,MSDOS等等,我所做的是在VFS和底层文件系统之间。所以我想它应该在硬盘之上的。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-12-21 22:17
用这种方法拦截的不是Linux系统调用。如果拦截系统调用诸如sys_read和sys_write的话,我也实现了代码,不过那不是文件系统驱动程序,而只是个一般的Kernel Module而已。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-12-21 22:26
请问guardee兄,你知道如何在文件系统之下拦截吗?即把代码插入到底层文件系统和硬盘驱动程序之间。我想我的方法只能实现File Level这个级别的拦截,我想实现Block Level级别的拦截,即我不用关心什么文件系统的东西,而只需要知道数据是发向或来自硬盘上的那个块或扇区的。这种拦截的级别应该更高一些,我现在正在研究,但没什么进展,我不知道怎样和硬盘驱动取得联系。请guardee兄指点密津。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-12-21 22:37
请问你原来做的那个硬盘保护所实现的拦截是在什么位置,如何实现的?
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-12-24 17:29
台湾的老板.....xxx坏,你才知道啊。
我也才知道。hehe.记住还有日本人哩,可能韩国的差不多呢
111
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-12-24 20:10
当时要做的也是在硬盘之上的SMARTDRV之下的过滤,可是只能拦,不知道怎么创建请求,把请求下发!后来可能是因为LINUX的系统太多了,并且那时侯REDHAT7。2出来之后看了一下原代码,发现有很大的改变,就放弃了,我觉得要做LINUX下的软件,最好还是看原代码,中国也有一个LINUX论坛比较好的,现在不做LINUX了,当时做LINUX的时候,用的就是自己开发的机器,系统经常坏,硬盘太小,没办法备份系统,坏了就只有重装了!烦死了,觉得LINUX的稳定性太差了,可能我做的都是太危险的操作吧!
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2001-12-24 20:12
当时做LINUX下的拦截的时候,拦BLOCK实在是不行了, 就想着简单的拦KM的调用,那是偷懒的方法,并且也很不安全!我觉得做保护的,最好还是做在BLOCK上!
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2001-12-24 20:14
当时我做这个的时候拦截的请求很多,即使是在系统很稳定的时候,就是没有听见硬盘灯亮,没有读写硬盘的声音,也有请求到来
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2001-12-24 20:35
不知道你要做的驱动,加载的方法是什么呢?修改配置文件?还是把重新编译系统,修改配置文件的方法不安全,而如果是重新编译系统的话,那实在是太麻烦了!当时也是因为这些原因才没有继续做下去,
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2001-12-24 22:47
如果能做成,我想我加载驱动的方法应该是简单的用insmod就可以加载。我不想给Kernel打任何的patch,那样的话对用户太不方便了。
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2001-12-24 22:55
在Linux下读写磁盘是不是都是通过ll_rw_block()这个Kernel API做的?能否拦截这个API呢?我现在是不知道如何在硬盘驱动程序和硬盘之间插入我的代码。即如何截获有关Block缓冲区的内容。

如果看Linux的源代码,应该具体看哪一部分呢? 关于BLOCK DEVICE的部分,那要看很多代码呀。
netfun2000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-18
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-01-31 09:15
你们做成功了吗?
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-02-01 10:19
兄弟,这么老的贴子都翻出来了。你给我发的邮件我也收到了。你是想实现哪个级别的保护,FILE LEVEL还是BLOCK LEVEL?如果是FILE LEVEL可以参考Stackable File System。如果是BLOCK LEVEL可以参考LINUX下的LOOP BACK DEVICE。你可以在LINUX的安装光盘上找到LOOP DEVICE的源代码,LOOP.C和LOOP.H。我已经实现了在LINUX和SOLARIS上的BLOCK LEVEL的保护,都是基于LOOP DEVICE的构想。希望对你有帮助,还有问题的话可以继续发贴或MAIL联系。
peirose
驱动牛犊
驱动牛犊
  • 注册日期2005-01-08
  • 最后登录2005-03-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-02-01 11:03
楼上高手..能回答一下这个问题么..谢谢
[url] http://www.driverdevelop.com/forum/viewthread.php?tid=86159[/url]
piggy
驱动牛犊
驱动牛犊
  • 注册日期2001-08-24
  • 最后登录2012-01-14
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望27点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-02-01 12:31
楼上,不好意思,没做过LINUX下这种东西,我都是用串口。不能帮助你了。
netfun2000
驱动牛犊
驱动牛犊
  • 注册日期2005-01-18
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2005-02-03 10:55
谢谢您的回复,我先看看源程序,如有不懂的地方,还请指教。
谢谢。
上一页
游客

返回顶部