【发布时间】:2012-04-23 09:47:59
【问题描述】:
我正在尝试使用 ptrace 实现数据流异常检测。经过一番研究,我实现了一个类似于 strace 的程序。现在,我对此感到困惑,这是 wiki 告诉我的关于系统调用的内容:
“系统调用提供进程和操作系统之间的接口”
当我使用 ptrace 修改进程的内存时,我是在用户空间还是内核空间工作?我真的很困惑。
【问题讨论】:
标签: c system-calls strace ptrace
我正在尝试使用 ptrace 实现数据流异常检测。经过一番研究,我实现了一个类似于 strace 的程序。现在,我对此感到困惑,这是 wiki 告诉我的关于系统调用的内容:
“系统调用提供进程和操作系统之间的接口”
当我使用 ptrace 修改进程的内存时,我是在用户空间还是内核空间工作?我真的很困惑。
【问题讨论】:
标签: c system-calls strace ptrace
你在一个单独的进程的地址空间中操作;这需要内核的调解(和许可),因为独立的进程通常不能影响彼此的地址空间。
【讨论】:
int 0x80 对吧?所以我正在处理一个中断,所以我在内核空间中对吗?这是我的第一个想法。我错了吗?
int 0x80),但它也可以简单地检查进程内存或寄存器。然而,这些中的任何一个都不能由另一个进程直接对一个进程执行;第二个进程必须要求内核对第一个进程采取行动,这就是 ptrace 所做的。