dポイントプレゼントキャンペーン実施中!

皆さん、こんにちは。
プログラミングを勉強中の大学生です。

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

よろしくお願いします。

A 回答 (3件)

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



参考URL:http://www.atmarkit.co.jp/fsecurity/rensai/rootk …

この回答への補足

こんばんは。回答ありがとうございます。
早速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

よろしくお願いします。

補足日時:2005/12/20 19:49
    • good
    • 0

hook_uname.cがどのOSの上で書かれているのかがわかりませんし、あなたがどのOSで開発しようとしているのかもわかりませんので、これ以上は何ともお答えできません。

これ以上の詳細は使用されているOSのドキュメントや市販されている図書により研究されることをおすすめします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/31 14:03

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



参考URL:http://www.microsoft.com/japan/Terminology/query …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/20 20:18

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