Pro*_*iol 6 c operating-system x86-64 system-calls linux-kernel
如果试图通过sys_call_table-hooking 挂钩某些系统调用,例如sys_execve这将失败,因为它们是由存根间接调用的.为sys_execve这是stub_execve(比较上汇编代码LXR).
但这些存根有什么用呢?为什么只有某些系统调用喜欢execve(2)并fork(2)需要存根,这是如何连接到x86_64的?是否存在挂钩存根系统调用(在可装入内核模块中)的解决方法?
小智 3
从这里开始,它说:
“某些特殊的系统调用需要保存完整的堆栈帧。”
我认为 execve 只是这些特殊系统调用之一。
从stub_execve的代码来看,如果你想hook它,至少你可以尝试:
call sys_execve,你可以将 sys_execve 的地址替换为你自己的钩子函数。