タグ

システムコールに関するshomah4aのブックマーク (2)

  • linux のシステムコールをフックする : DSAS開発者の部屋

    最近、とあるクローズドソースなデバイス管理ツールの挙動が気になり、その動作について解析してみることにしました。 プログラムをデバッグしたり解析したい時、どんなシステムコールが呼ばれ、どのような引数が渡されているかを、調べることができる strace は非常に有用です。 しかし、strace では ioctl で渡される複雑なデータ構造を表示することはできないため、システムコールをフックして引数を表示するという手段を取ることにしました。 そんな訳で linux でシステムコールをフックする方法について調べて見たところ、意外といろいろな方法が有ることを知りましたので、試してみた方法を幾つか紹介したいと思います。 注)今回の実験に使用した linux kernel のバージョンは 2.6.25.11 です。異なるバージョンではこの実験通りにはならない場合があります。 LD_PRELOAD を使っ

    linux のシステムコールをフックする : DSAS開発者の部屋
  • Linux Kernel Hacking

    システムコールの追加 LKMによるシステムコールのフック システムコールの制限 システムコールの追加 各システムコールは arch/i386/kernel/entry.S の system_callという関数か ら呼ばれる。ユーザプログラムからレジスタを使って渡されたシステムコール への引数はスタックに積まれ、システムコールを実現する関数の引数としてア クセスできる。 新しいシステムコールを追加するには以下のようにする。 arch/i386/kernel/entry.Sに新しいエントリを追加する。 ENTRY(sys_call_table) .long SYMBOL_NAME(sys_ni_syscall) .long SYMBOL_NAME(sys_exit) : .long SYMBOL_NAME(sys_new_syscall) /* 新しいエントリ */ .rept NR_sysc

  • 1