掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
API関数の呼び出しを監視するには (ID:55845)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
他のプロセスを監視したいんですよね? API フックという方法を使います。 監視したい関数をエクスポートしている DLL の振りをする DLL を作り、それを対象プロセスにロードさせます。 Advanced Windows http://www.amazon.co.jp/exec/obidos/ASIN/4756138055/ に詳しく載ってます。高いですけど… 1.インポートセクションを静的に書き換える方法 手動でゴリゴリやることもできますが、簡単にするツールがあります。 listexp / listexp2 というのを参照してください。 http://www.chiyoclone.net/details.html 2.インポートセクションを動的に書き換える方法 対象のプロセスのイメージを解析し、メモリを書き換えます。 解析は ImageDirectoryEntryToData という関数を使うと簡単です。 まず、PE ファイルの構造を学ばなければなりませんが… 詳細な資料はこのへんにあります。 http://msdn.microsoft.com/msdnmag/issues/02/02/PE/default.aspx http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx 対象のプロセスに、監視 DLL を動的に潜り込ませるには、いくつかの 方法があります。 2-a.SetWindowsHookEx を使う 別に何かをフックするわけではなくて、単に対象のプロセスに DLL をロードさせるためだけに使います。 2-b.レジストリを使う HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Windows\\AppInit_DLLs ここに DLL を書いておくと、全てのプロセスがその DLL を自動的に読み込みます。 対象のプロセス以外も無差別にロードしてしまいますが… 2-c.CreateTemoteThread で LoadLibrary を実行する 最もスマートで柔軟な方法ですが、NT 系でしか使えないという欠点があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.