ゆの in SystemTap - 解説?

id:NeoCat:20080713:1215944362 の簡単な解説です。

まずSystemTapとは、簡単なスクリプトLinuxカーネルの動きを解析するためのツールです。
詳しくはRedHatの解説in日本語とか本家サイトとか、man stapとかman stapexとかをどうぞ。


普通は情報をとるだけのread-onlyで、安全面がちゃんと考慮されているのですが、裏技で-gオプションをつけるとカーネルの動きを変更できてしまいます。
好きな場所にCのコードを埋め込んだり、システムコールの返り値を書き換えたり、何でもしたい放題!


ゆのSystemTapスクリプトでは、カーネルのreadシステムコールの完了部分にフック(probe)を入れ、
プロセスがcatコマンドの場合に限り、読んだ内容を解析して、ゆのを発見すると勝手に読んだ中身のメモリを書き換えるというシロモノです。
execname() == "cat" という条件分岐を取り除くと、安全策に引っかからない限りどんなプロセスでも対象になりますが非常に危険。
なにしろメモリの書き換えはEmbedded-Cを使ってmemcpyするという強引っぷり。
ご利用は計画的に。