私は、さまざまなタイプのデジタル署名付き共有ライブラリを読み込んで管理するためのマルチプラットフォームC++コンポーネントを作成しました。これは、呼び出しプロセスへのマッピング、分岐修正の適用、インポートのバインド、および初期化エントリポイントの呼び出しを含む、ロードと初期化のすべての側面を処理します。 LoadLibrary()はプラットフォーム固有であり、すべての共有ライブラリがPE形式ではないため、コンポーネントはLoadLibrary()を使用できません。デバッグイベントを外部ソースからWindowsデバッガに送信
私が直面している残りのいくつかの問題の1つは、対象となるプラットフォームと開発環境で適切なデバッガのサポートを提供することです。 MS Windows環境では、コンパイラとリンカによって生成された(または他のソースから変換された)シンボル情報を読み込むようにデバッガを取得することが含まれます。ライブラリのロードと初期化はカーネルの外部で行われるため、デバッガはLOAD_DLL_DEBUG_EVENTイベントとUNLOAD_DLL_DEBUG_EVENTイベントを受け取ることはありません。これは、次の質問につながります。
- LOAD_DLL_DEBUG_EVENTなどのイベントをデバッガに直接送信できるAPIまたはシステムコールはありますか?
- プログラムまたはセッションデバッグマネージャまたはマシンデバッグマネージャサービスと直接通信するための文書化された方法はありますか?
- カーネルおよびその後にDLLがロードされたことをデバッガに通知するためのAPIまたはシステムコールがありますか? PEファイルは主にサポートされている形式の1つで、これが最も望ましいオプションです。また、ライブラリがプロセスのモジュールリストに表示されるという潜在的な利点もあります。
- WinDBG SDKはWindows全体のデバッグに適用され、WinDBG拡張機能を使用してデバッガにシンボル情報のロードを指示できますか?
私は上記のトピックに関する情報を広範に検索していますが、短くなっています。私は、Windowsデバッガで使用されているデータ構造に関する情報を少し見つけましたが、私の特定の状況には関係ありません。
私は、文書化されているか文書化されていないAPI /システムコールとアプローチにはオープンしています。
なぜカーネルモードのデバッグが必要ですか? – Ajay
@ajay私はしません。私のポストには不明なものがありますか? –