タグ

hookに関するshomah4aのブックマーク (3)

  • ウノウラボ Unoh Labs: LD_PRELOADを使って任意の関数呼び出しにフックしてみる

    尾藤正人(a.k.a BTO)です 先日の社内勉強会のLTでLD_PRELOADについて簡単にやってみました。 LD_PRELOADって? 環境変数$LD_PRELOADを使うと他のライブラリの読み込みの前に任意のライブラリを先に読み込ませることができます。 実行プログラムの形式にELF形式を採用しているOSで使うことができます。 Linuxであれば問題なく使用できるはずです。 何ができるのか プログラムを変更することなく、任意の関数を上書きしたり、任意の関数にフックすることができます。 libhookwriteを作ってみた 簡単なサンプルプログラムとしてlibhookwriteというのを作ってみました。 libhookwriteはその名の通りwrite(2)にフックをかけることができます。 といってもできることは限られていてファイルのタイムスタンプの更新か、任意のプログラムをsh

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

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

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

    はじめに Windowsアプリケーションは、通常APIを利用することによって実現されています。たとえ.NETやMFCなどを利用して作成されたプログラムであったとしても、内部的にはすべてWindowsAPIが呼び出され処理されているというのは周知の事実です。プログラムがWindows上で動作している限り、何かしらのカタチでAPIが使われていることは確かなのです。では、今回はそのAPIをフックすることを考えてみます。「Wizard Bible vol.15」の「リバースエンジニアリング」にて、私はAPIフックについて少しだけ触れましたが、今回はそのAPIフックについてのさらに深い話題となります。あらかじめ必要な知識は、Windowsプログラミングに多少の知識があることと、特にDLL関連に詳しいことです。あと「Wizard Bible vol.10」の「常駐プログラム隠蔽テクニック」も読んでおい

  • 1