vfvf 发表于 2005-8-15 11:01:44

截获execve系统调用,为什么出现“段错误”?

在linux下,使用LKM截获execve系统调用,编写新的new_execve系统调用时,为什么出现“段错误”呢?就算new_execve函数体内什么都不做

,只返回原来的execve系统调用,也会出现“段错误”。而截获其它的系统调用如open, read等都没问题。不知是不是new_execve函数参数传

递有什么不对的地方,请各位多多帮忙。多谢多谢了。

   代码是这样的:
   ……
   ……
   int new_execve(const char *filename,const char *argv[],const char *envp[])
{
   return (*old_execve)(filename,argv,envp);
   }
   int init_module()
   {
   SYS_CALL_TABLE_ADDR=getscTable();
   sys_call_table=(void **)SYS_CALL_TABLE_ADDR;
   old_execve=sys_call_table;
   sys_call_table=new_execve;
   return 0;
   }
   int cleanup_module()
   {
   sys_call_table=old_execve;
   return 0;
    }

yuyulvxian 发表于 2005-8-19 10:29:35

open read 实际测试的功能如何
页: [1]
查看完整版本: 截获execve系统调用,为什么出现“段错误”?