+ -
当前位置:首页 → 问答吧 → 请问劫持read系统调用的时候,如何判断是否是一个真正的文件?

请问劫持read系统调用的时候,如何判断是否是一个真正的文件?

时间:2010-07-29

来源:互联网

照论坛上大大们的方法劫持了系统调用,想要做一个读写文件加密的工作,所以添加了劫持read/write系统调用的功能。
在new_read()里面,送入函数的只是文件描述符fd,但是如何通过它判断调用read的是否是真正的文件呢?
我获取了kstat结构体之后,按照ISREG(kstat.mode)判断,如果返回1的话,对read出来的buf做修改。
结果insmod命令刚敲完,系统就崩溃了。
而linux下面不常用后缀名判断文件类型,请问能否通过file结构体或者fd来判断这个文件是不是真正的文件呢(文本文件或者ppt等文件)?
谢谢了!

作者: cdwzt   发布时间: 2010-07-29

回复 cdwzt


    加密可以通过device mapper来做。我觉得既然你能劫持系统调用,还不如直接操作内核。

作者: kgn28   发布时间: 2010-07-29

回复 kgn28

谢谢!我先前也觉得代价稍微有点大,看了一篇相关的论文,劫持系统调用加密100K的文件需要5秒多,而我们用的是更慢的CTR算法。
不过BOSS说走这个思路,而且也快没时间了,悲剧,不想BOSS交代的第一件事就搞砸哇。

作者: cdwzt   发布时间: 2010-07-29

linux下面虽然不常用后缀名判断文件类型,但一般都会写明相应类型的

作者: linux初学三月   发布时间: 2010-07-29

而且只通过file结构体是无法判断文件类型的

作者: linux初学三月   发布时间: 2010-07-29

回复 linux初学三月


    谢谢!
我通过fget(fd)获取文件指针,然后获取文件名,再对后缀进行判断,这样可以过滤txt、pdf等文件的后缀了。
可是在open系统调用里面这样调用fget(用户态的函数?)的代价是不是有些高呢?

作者: cdwzt   发布时间: 2010-07-29

回复 cdwzt


    通过inode的i_mode字段判断文件类型。http://lxr.linux.no/linux+v2.6.30.10/include/linux/fs.h#L735

作者: kgn28   发布时间: 2010-07-29

热门下载

更多