截获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;
} open read 实际测试的功能如何
页:
[1]