+ -
当前位置:首页 → 问答吧 → 又遇到问题了,拦截sys_creat,为什么拦不到?创建文件的系统调用难道不是creat吗?

又遇到问题了,拦截sys_creat,为什么拦不到?创建文件的系统调用难道不是creat吗?

时间:2010-07-21

来源:互联网

asmlinkage long sys_creat(const char __user *pathname, int mode);
不管是打LOG还是从结果上看都没有反应。
以下是strace跟踪自动打出来的报告:
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000046           2        26           mmap2
  0.00    0.000000           0         5           read
  0.00    0.000000           0        33        13 open
  0.00    0.000000           0        23           close
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         5         5 access
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         1           dup2
  0.00    0.000000           0         2           munmap
  0.00    0.000000           0         1           uname
  0.00    0.000000           0         6           mprotect
  0.00    0.000000           0         2           rt_sigaction
  0.00    0.000000           0         1           rt_sigprocmask
  0.00    0.000000           0         1           getrlimit
  0.00    0.000000           0        19           fstat64
  0.00    0.000000           0         3         1 futex
  0.00    0.000000           0         1           set_thread_area
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         1           set_robust_list
  0.00    0.000000           0         1           utimensat
------ ----------- ----------- --------- --------- ----------------
100.00    0.000046                   136        19 total


完全没有creat的影子,几个主要的,mkdir,rmdir,rm,link,unlink,access,open,read,write什么的都拦到了,没想到最基本的创建文件居然卡住了。主要是鼠标右键创建和touch命令创建的拦不到,其他的比如用gedit或者emacs这种的我用access调用可以干掉。毙掉open可以干掉鼠标右键的创建但是不能毙掉touch的(把open 直接毙掉也不太行)

作者: zonelight   发布时间: 2010-07-21

也许直接算到open去了

SYSCALL_DEFINE2(creat, const char __user *, pathname, int, mode)
{
        return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
}

作者: zyr-linux   发布时间: 2010-07-21

不行啊,我不做任何判断直接在OPEN里return -1,然后输入touch命令依然会有文件被创建出来。

作者: zonelight   发布时间: 2010-07-21

改了源代码?哪个open的?

作者: zyr-linux   发布时间: 2010-07-21



QUOTE:
改了源代码?哪个open的?
zyr-linux 发表于 2010-07-21 18:30


系统调用拦截到的sys_open

作者: zonelight   发布时间: 2010-07-21

热门下载

更多