基本的にWindowsのプログラムはウィンドウを作ったり文字を描画する為にWin32APIというOSから提供されている関数郡を用いますが、 今回はそのAPIの呼び出しをフック(横取り)する方法について考えたいと思います。 今回は自分のプログラムのMessageBox関数をフックする場合について考えていきます。 まずMessageBoxの代わりに呼び出される関数を用意します。 APIは__stdcall(呼び出された関数がスタックを巻き戻す方式)という呼び出し規約ですが、C/C++言語では__cdecl(呼び出した側がスタックを巻き戻す方式)という 呼び出し規約を用いていますので__stdcallを示すためにWINAPIを付けなければなりません。 ちなみにDelphiやBCCなどのBorland製品は__fastcall(一部をレジスタで渡す)、GCCはなんかよく分からない呼び出し規約だそう
Windows SDKやMFCに関するメモです。 (記載内容について正しいことを保証するものではありません。MSDN等で確認してください) DLLインジェクションというのは、DLLを別プロセスに挿入させるテクニックで、使用方法によっては有益なツールや悪意のあるツールまで様々な使用方法があります。 ポイントは、プロセス空間にはいってしまうので通常はプロセス外から取得できな情報取得や操作ができる点です。 通常はDLLをプロセスに挿入しただけでは、大したことはできないのですが、これにメッセージフックやAPIフックなどを組み合わせると強力なテクニックになります。 こういった、テクニックはシステム系のツールなどでよくつかわれているようです。 例えば、ウイルスバスターなどのアンチウイルスソフト等もこういった方法で起動プロセスの抑止や、通信内容のスキャンを行っていいるものと思われます。(仔細に調べた訳で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く