プロが教えるわが家の防犯対策術!

表題の通り,実行中のプロセスのシステムコールのフックについて質問があります.
現在,Linux上の全てのプロセスがどんなシステムコールを使って,どんなリソースにアクセスをしているのか調査しているのですが
具体的には以下のURLのソフトと同じものを,Linux上でC言語を用いて作りたいと考えています.

[Process Monitor]
http://www.microsoft.com/technet/sysinternals/ut …

いろいろ調べていく中で strace
http://www.netadmintools.com/html/1strace.man.html
を使うと目的としている調査が実装できそうだということでさっそくいじってみたのですが,
strace では既に実行されているプロセスのシステムコールの呼び出しをトレースすることはできないようでした.
そこで1点質問なのですが,既に実行中のプロセスのシステムコールをフックするにはどのような方法を使えばいいのでしょうか.
お分かりになるかたご回答よろしくお願いします.
こちらの開発環境は以下です.

OS: Debian 4.0
Kernel: 2.6.20-16
gcc: 4.1.2
(3つとも11/9現在の最新版を使用しています)

A 回答 (2件)

straceの-pオプションでプロセスIDを指定することにより、実行中のプロセスにstraceをアタッチすることができたと記憶しています。

この回答への補足

ありがとうございます、こちらの調査不足でした。
プログラムを組んで任意のプロセスにアタッチしようとしたところ
アタッチできるプロセスとそうでないプロセスがあることがわかりました。

例えばroot権限でinitにアタッチする場合は受け付けてもらえませんでした。

#strace -o aaa.txt -p 1
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted

権限がないとのことなのですが、
どのようにすればアタッチできるか教えていただけないでしょうか。

補足日時:2007/11/22 19:21
    • good
    • 0

ptraceではinitへのアタッチは出来ないようですよ。



下記URLの「エラー」の「EPERM」ところを参照。
http://www.linux.or.jp/JM/html/LDP_man-pages/man …

参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
    • good
    • 0
この回答へのお礼

ありがとうございます。
デーモン系のプロセスにはどうやらアタッチできないみたいですね。
カーネルをいじる必要があるようです。
お答えいただいて助かりました。

お礼日時:2007/12/03 14:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!