タグ

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

  • グローバルフックを使う

    フックには、スレッド固有のフックとグローバルなフックがありますが、今回はグローバルフックを使ってみます。 グローバルフックを使えば、ウインドウズがアプリケーションに送るメッセージを監視することができます。マウスカーソルを自動的に動かしたり、ボタンを勝手に押してくれるようなソフトもフックを使っていると思われます。 グローバルフックのフックプロシージャはDLLに置かないといけないので、グローバルフックを使うプログラムではDLLを作る必要が出てきます。また、DLLはアプリケーション1つにつき1つずつ読み込まれて、それぞれが独自のデータ領域を持つようなのですべてのDLLで共通に使用できる共有領域を作る必要があります。この領域には、フック プロシージャのハンドルを格納します。これを共有領域に置かないと複数のフックを組み込んだときにうまく動かないことがあります。 フックの種類 フックの種類を示します

  • プログラミング::API Hook

    的にWindowsのプログラムはウィンドウを作ったり文字を描画する為にWin32APIというOSから提供されている関数郡を用いますが、 今回はそのAPIの呼び出しをフック(横取り)する方法について考えたいと思います。 今回は自分のプログラムのMessageBox関数をフックする場合について考えていきます。 まずMessageBoxの代わりに呼び出される関数を用意します。 APIは__stdcall(呼び出された関数がスタックを巻き戻す方式)という呼び出し規約ですが、C/C++言語では__cdecl(呼び出した側がスタックを巻き戻す方式)という 呼び出し規約を用いていますので__stdcallを示すためにWINAPIを付けなければなりません。 ちなみにDelphiやBCCなどのBorland製品は__fastcall(一部をレジスタで渡す)、GCCはなんかよく分からない呼び出し規約だそう

  • 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