• ベストアンサー

システムコールをフックするという意味

皆さん、こんにちは。 プログラミングを勉強中の大学生です。 タイトルどおりですが、システムコールをフックするとはどういった意味でしょうか? 別の質問をしたときに回答してくれた人が言っていました。 その人に聞く前に締め切ってしまい、追加の質問ができなくなってしまいました。 「フックする」というのがわかっていません。システムコールもよくわかりません。 WEBで検索しても持っている本を調べてもわかりませんでした。 具体例を交えて説明していただけるとうれしいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zuntac
  • ベストアンサー率36% (45/124)
回答No.2

参考URLの説明が分かりやすいと思います。

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html
noname#17299
質問者

補足

こんばんは。回答ありがとうございます。 早速URLを確認しましたが、まだ若干難解でした。 システムコールの意味は、「ユーザーからの要求や割り込み発生時などに、カーネルへの要求が行われることをシステムコール」とあるとおりで概要は理解しました。 「カーネルとのやりとりを行うインターフェイスとなるものがカーネル関数である。」 というところのカーネル関数がどういうものかよくわかりません。 カーネル関数という何か処理をするものがカーネル内部にあり、それにアクセスするためには、sys_call_table[ ]という名前のテーブル(配列)をインタフェースとして使うことも理解しました。 フックの意味は、sys_call_table[ ]というインタフェースには、カーネル関数の所在を示すデータ値があり、それを変更することによって、別のカーネル関数を呼び出すことで、別の処理をさせることができることも理解しました。 しかし、なぜそういったこと(別の処理)をさせる必要があるのかがわかりません。 教えていただいたURLでは、悪意を持ったコード(hook_uname.c)を間にかますことで処理を変更していますが、これを正当な技術として活用できるのでしょうか? 試しにhook_uname.cをコンパイルしてみたところ、includeが適切でないようなメッセージが出ました。 ぜひ動かしてみたいので、以下のエラーの修正方法を教えてください。 [root@aaa hooktest]# gcc -c -O3 hook_uname.c /usr/include/linux/module.h:10 から include されたファイル中, hook_uname.c:5 から: /usr/include/linux/config.h:5:2: #error Incorrectly using glibc headers for a kernel module hook_uname.c:7:26: linux/string.h: そのようなファイルやディレクトリはありません string.hで検索したところ、以下が引っかかりました。 /usr/include/bits/string.h /usr/include/string.h /usr/include/asm/string.h /usr/local/include/isc/string.h /usr/local/src/bind-9.3.1/lib/isc/include/isc/string.h /lib/modules/2.6.9-1.667/build/include/linux/string.h /lib/modules/2.6.9-1.667/build/include/asm-i386/string.h よろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • zuntac
  • ベストアンサー率36% (45/124)
回答No.3

hook_uname.cがどのOSの上で書かれているのかがわかりませんし、あなたがどのOSで開発しようとしているのかもわかりませんので、これ以上は何ともお答えできません。これ以上の詳細は使用されているOSのドキュメントや市販されている図書により研究されることをおすすめします。

noname#17299
質問者

お礼

こんにちは、zuntacさん。 OSの種類も記載せずに質問してしまい、申し訳ございません。 サンプルプログラムを理解するにはまだまだ力不足だとわかりました。 この問合せについてはこれで一旦クローズということにします。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

ここの説明が解りやすいかと。

参考URL:
http://www.microsoft.com/japan/Terminology/query.asp?id=5493&q=%u30D5%u30C3%u30AF&kbid=&key=&ui=S&dev=P
noname#17299
質問者

お礼

ご回答ありがとうございます。 フックという言葉の意味は理解できました。 ただ、具体的にイメージがつきませんでした。 もう少し具体例を交えてご説明いただければ助かります。 今回は別の人に補足説明の依頼をしています。 また何かありましたらご指導お願いします。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A