2011-05-14 26 views
1

美好的一天,C可以用來捕獲計算機上的系統調用嗎?

我想知道是否有辦法用C或C++做直接的系統調用捕獲?

我知道,目前在UNIX系統上,您可以使用SystemTap來執行系統捕獲。我遇到的問題是,爲了將它們饋送到另一個分析程序中,我必須將它們傳送給另一個程序。

我想通過編程方式傳遞信息,因爲這比「打印」到管道中然後使用其他程序讀取更容易。

有沒有辦法做到這一點?它會有多難?

+2

這是高度特定於操作系統。您不必超越問題標題來認識到這一點:「C可以用於在計算機上捕獲**系統調用**嗎?」當然你可以使用C或C++,但是如何完成取決於操作系統。那麼我們只談論Unix,還是你有另一種操作系統? – 2011-05-14 02:51:44

+0

在那一刻,這隻會在unix機器上完成。一臺debian機器更精確。 – 2011-05-14 02:58:37

+1

_Can C可用於-_是。 – 2011-05-14 03:20:10

回答

4

strace確實如此。

你可以看看它的source code看看它是如何完成的。

+0

strace僅捕獲我指定的程序的調用,對嗎?我正在尋找一種方法來捕獲正在發生的所有呼叫。 ptrace不會讓我做這種「捕獲所有」類型的東西,我想,我必須研究它。 – 2011-05-14 03:21:07

+1

@Jerry:如果用戶級程序可以輕鬆攔截* all *程序中的系統調用,那將是一個安全漏洞。但是你的ptrace-using程序可以很容易地攔截所有後代的系統調用。儘早將程序放在啓動或登錄序列中,並且可以獲得所需的範圍。 – Karmastan 2011-05-16 18:19:31

相關問題