2012-04-11 100 views
2

我正在嘗試使用ptrace實現數據流異常檢測。經過一些研究,我實現了一個類似strace的程序。現在,我很困惑這一點,這就是維基告訴我有關的系統調用:ptrace是否在用戶級別或內核級別上工作?

「系統調用提供一個進程和操作系統之間的接口」

當我使用ptrace修改進程的內存,我是在用戶空間還是內核空間上工作?我對此很困惑。

回答

2

您正在單獨進程的地址空間中運行;這需要內核的調解(以及許可),因爲獨立進程通常不會影響彼此的地址空間。

+0

實際上,ptrace會爲每個系統調用生成一個「int 0x80」權限?所以我正在處理一箇中斷,所以我在內核空間是正確的?這是我的第一個想法。我錯了嗎? – 2012-04-11 05:06:40

+1

不完全是,它可以在* it *進行系統調用時停止進程(對於Intel上的Linux,它已經是「int 0x80」),但它也可以簡單地檢查進程內存或寄存器。然而,其中的任何一個都不能直接由另一個進程完成。那麼第二個進程必須要求內核在第一個進程上執行,這就是'ptrace'所做的。 – geekosaur 2012-04-11 05:13:24

+0

所以如果我想直接在內核空間中操作,我應該怎麼做? – 2012-04-11 05:29:53

相關問題