22

Microsoft Detours は初めてです。プロセスが行うシステムコールを追跡するためにインストールしました。Webから取得した次のコマンドを実行します

syelogd.exe /q C:\Users\xxx\Desktop\log.txt 
withdll.exe /d:traceapi.dll C:\Program Files\Google\Google Talk\googletalk.exe

ログファイルを取得します。問題は、ここで何が起こっているのかを完全には理解していないことです。迂回路はどのように機能しますか? システムコールをどのようにトレースしますか? また、log.txt の出力を読み取る方法もわかりません。これはlog.txtの1行です

20101221060413329 2912 50.60: traceapi: 001 GetCurrentThreadId()

最後に、プロセスのスタック トレースを取得します。どうすればそれを手に入れることができますか?

4

4 に答える 4

29

Detours を使用すると、任意の機能を傍受できます。指定したアドレスに jmp を配置し、コードにトランポリンを作成します。最後に、必要に応じて古い関数を呼び出します。Detours を使用するには、インターセプトするプロセスにコードを挿入する必要があります。

このプロセスを簡素化するために、すべてのインジェクション スタッフを実行するDeviare API フックを使用できます。また、.NET、Delphi、C++、Python など、COM テクノロジをサポートする任意のプログラミング言語からインターセプト アプリケーションを使用できます。パッケージをダウンロードした後、その中でいくつかの例を見つけてください。DeviareCSharpConsole という名前のコンソールがあり、すべてのプロセスの API をインターセプトして、完全なスタック トレース情報を表示できます。

これはDeviare API フックの動作ですが、別のプロセスをフックするアプリケーションを作成する場合に必要なことです。

Deviare API フックの設計

必要な API をインターセプトするには、ターゲット プロセスでエージェントを作成する必要があります。これらの API をインターセプトするには Detours を使用できますが、そのライブラリに含まれていない IPC スタッフをコーディングする必要があります。

Deviare API フックを使用してターゲット プロセス内にコードを記述する必要がある場合は、 Deviare カスタム フックを使用できます。この機能を使用すると、API をインターセプトし、処理されたパラメーターを非同期で処理できます。

于 2010-12-27T15:27:04.980 に答える
22

回り道 (32 ビットのみで無料) や easyhook (ちょっと厄介なコード) の代わりに、非常にきちんとしたコードで BSD ライセンスのmhook 2.4をチェックアウトすることをお勧めします。x86 および x64 で動作し、IP 相対コードなどを処理します。

また、サイトでどのように機能するかについての完全な説明もあります。

代替テキスト

スタック バックトレースについては、 のCaptureStackBackTrace ()使用できkernel32ます。dbghelp

于 2010-12-31T06:46:44.933 に答える
17

まず第一に、API フックを実行する場合は、 http ://easyhook.codeplex.com/ (オープン ソース) の easyhook を使用することを強くお勧めします。これは非常に優れた簡単な API フック フレームワークです。

スタック トレースの取得方法については、正確な方法は覚えていませんが、WinAPIOverride32: http://jacquelin.potier.free.fr/winapioverride32/ (オープン ソース) を参照してください。彼はまさにそれを行っており、それはオープンソースです。さらに、調査のためにトレースが必要な場合、WinAPIOverride32 は、アプリケーションの動作を調査するために使用する優れたアプリケーションです。

編集: アプリケーションをもう 1 つ追加するだけです。http://www.rohitab.com/は WinAPIOVerride32 に似ていますが、64 ビットをサポートしており、この回答を書いてから大幅に改善されました。場合によっては、WinAPIOverride32 で見つけた API 呼び出しを見逃していたことを指摘する必要がありますが、それでもかなり良好です。残念ながらソースは公開されていません。

API フックの仕組みについては、長い説明になりますが、この記事を 参照し てください: http://www.codeproject.com/KB/system/hooksys.aspxフード(そこに書かれている以外にも他の方法がありますが、それでも非常に良い記事です).

それが役に立てば幸い!:-)

于 2010-12-25T10:48:04.943 に答える
3

Detours 以外の使用が許可されている場合は、WinDbg などのデバッガーをインストールし、それをプロセスにアタッチしてコールスタックを取得できます。

ここで説明されているように、 Process MonitorWindows Performance Toolkitなどの他のツールを試すこともできます。

于 2010-12-26T23:05:11.160 に答える