IDA によって、RUNTIME_FUNCTION 構造体の .pdata セグメントに大きな配列が見つかりました。それで、私が情報を見つけることができる場所: コンパイルされたものから、これを作成する方法と C++ で使用する方法。この構造での例外処理と巻き戻しに関する書籍、または適切な説明とチュートリアルへのリンクをください。
質問する
4415 次
2 に答える
1
RUNTIME_FUNCTION および関連する構造の詳細については、Microsoft の MSDNを参照してください。
これらの構造体はコンパイラによって生成され、構造化例外処理の実装に使用されます。コードの実行中に例外が発生する可能性があり、ランタイム システムはコール スタックをたどってその例外のハンドラーを見つけることができる必要があります。そのためには、ランタイム システムは、個々の関数スタック フレームを正しく巻き戻すために、保存するレジスタの関数プロローグのレイアウトを知る必要があります。詳細はこちら。
RUNTIME_FUNCTION は、単一の関数を記述する構造体であり、それを巻き戻すために必要なデータが含まれています。
実行時にコードを生成し、そのコードをランタイム システムで使用できるようにする必要がある場合 (コードが既にコンパイル済みのコードを呼び出し、例外が発生する可能性があるため) 、生成された関数ごとにRUNTIME_FUNCTIONインスタンスを作成し、 UNWIND_INFOを入力します。 RtlAddFunctionTableを呼び出してランタイム システムに通知します。
于 2014-05-29T16:22:15.860 に答える