我试图通过修改系统调用表来挂接Linux3.x内核上的sys_execve()函数。问题是,sys_execve()应该只在执行不成功时才返回错误代码。但是,当它在一个不存在的文件或其他导致错误条件的文件上被调用时,调用程序将崩溃,并显示:
segfault at 3b ip 000000000000003b...使用strace检查挂钩的sys_execve()的返回值显示-1或ENOSYS,而不是正确的错误代码,这让我感到困惑,因为我已经检查了包装器函数的程序集以及sys_execve()的Linux源代码。