2

IDA によって、RUNTIME_FUNCTION 構造体の .pdata セグメントに大きな配列が見つかりました。それで、私が情報を見つけることができる場所: コンパイルされたものから、これを作成する方法と C++ で使用する方法。この構造での例外処理と巻き戻しに関する書籍、または適切な説明とチュートリアルへのリンクをください。

4

2 に答える 2

1

RUNTIME_FUNCTION および関連する構造の詳細については、Microsoft の MSDNを参照してください。

これらの構造体はコンパイラによって生成され、構造化例外処理の実装に使用されます。コードの実行中に例外が発生する可能性があり、ランタイム システムはコール スタックをたどってその例外のハンドラーを見つけることができる必要があります。そのためには、ランタイム システムは、個々の関数スタック フレームを正しく巻き戻すために、保存するレジスタの関数プロローグのレイアウトを知る必要があります。詳細はこちら

RUNTIME_FUNCTION は、単一の関数を記述する構造体であり、それを巻き戻すために必要なデータが含まれています。

実行時にコードを生成し、そのコードをランタイム システムで使用できるようにする必要がある場合 (コードが既にコンパイル済みのコードを呼び出し、例外が発生する可能性があるため) 、生成された関数ごとにRUNTIME_FUNCTIONインスタンスを作成し、 UNWIND_INFOを入力します。 RtlAddFunctionTableを呼び出してランタイム システムに通知します。

于 2014-05-29T16:22:15.860 に答える