進(jìn)程附加

在之前的文章中,我們都是trace自己程序fork出來的子進(jìn)程,現(xiàn)在我們來看一下如何trace一個正在運行的進(jìn)程。

trace一個正在運行的進(jìn)程稱為進(jìn)程附加(attach)。使用的是ptrace函數(shù)的PTRACE_ATTACH參數(shù)。當(dāng)一個進(jìn)程成功附加到一個正在運行的進(jìn)程時,此進(jìn)程會成為被附加進(jìn)程的父進(jìn)程,同時向被附加的進(jìn)程發(fā)送一個SIGSTOP信號,讓其停止,這時我們就可以對其進(jìn)行操縱。當(dāng)我們完成對tracee的操作后就可以使用ptrace的PTRACE_DETACH參數(shù)停止附加。

我們用一個循環(huán)來模擬一個正在運行的進(jìn)程,下邊稱此程序為hello