【发布时间】:2015-10-28 17:11:19
【问题描述】:
我在 centos 6.6 上工作,想为clone 添加一个post-clone 钩子。我已将syscall_table[__NR_clone] 更改为我的函数,在这里我将堆栈上的返回地址更改为我的post-clone 函数,然后使其跳转到实际的clone 系统调用,以便在实际系统调用之后,程序将返回回到我的post-clone 函数。由于我在实际的clone 发生之前更改了堆栈上的返回地址,因此父进程和子进程都应该具有相同的返回地址。但是,只有父进程返回到我的post-clone,而子进程返回到实际返回地址。希望有人能帮我弄清楚为什么会这样。
【问题讨论】:
-
这个话题很有趣,你介意添加一些代码sn-ps吗?
-
@tlwhitec,对不起,我没有代码了。但它只是使用了基本的系统调用拦截技术,即将系统调用表中的系统调用指针更改为linux内核模块中定义的函数。
标签: linux centos fork system-calls callstack