Linux x64下hook系统调用execve的正确方法
1.概述
Linux下hook内核execve系统调用的方法有很多:
- 可以使用inline-hook,将sys_execve函数头部修改成jmp指令跳转到我们自己hook函数;
- 可以使用内核本身的kprobes功能,内核需包含CONFIG_KPROBES编译选项;
- 还可以使用hook系统调用表的方法,替换其中__NR_execve项为我们的hook函数的地址。
本文介绍一下采用hook系统调用表项的方法该如何实现。
2.问题
一般的hook系统调用表项代码要这样写(伪代码)
asmlinkage long my_execve_hook64(const char __user *filename,
const char __user *const __user *argv,
const char __user *const __user *envp)
{
long rc;
rc = do_somet