ptrace
私のプログラムでは、同じプロセス内のユーザー レベルですべてのシステム コールをインターセプトしたいと考えています ( のような別のプロセスや のようなツールを使用したくありませんstrace
)。また、LD_PRELOAD も使用したくありません。どうやってやるの?
1 に答える
4
Cマクロを使用します。それはこのように動作します:
追跡する各システムコールのマクロを定義するヘッダーファイルを作成します。例:
open()
#define open(path,flags,mode) mySpecialOpen(path,flags,mode)
mySpecial*()
呼び出しをsyscallに転送する関数を含むライブラリを作成します。ヘッダーファイルなしでライブラリをコンパイルします。上記のヘッダーファイルを使用して、コード(および使用するすべてのライブラリ)をコンパイルします。ライブラリとリンクします。
于 2012-05-09T12:11:21.070 に答える