2

アルマジロに似たファイルプロテクターを書いています。したがって、アンチダンプ保護のためにある種の「ナノマイト」を実装したいと考えています。

ただし、自分のプロセスを開く代わりに、フックすることにしましたKiUserExceptionDispatcher

問題は、何が渡されているのかわからないこととKiUserExceptionDispatcher、例外の種類が例外であると判断した後に続行する方法がわからないことですSTATUS_BREAKPOINT

Google で検索してみましたが、うまくいきません。私が見つけたのはKiDispatchException、ルートキットに引っかかっている の結果だけです。

誰かが私にこの関数の typedef を提供し、それが実際にSTATUS_BREAKPOINT例外であると判断した後に続行するにはどうすればよいか教えてもらえますか? NtContinueEIP コンテキストを変更した後に呼び出しますか?

それとも、これが私が思っているほど単純でない場合は、アルマジロ スタイルに固執する必要がありますか? 自分のプロセスをデバッグしていますか?

ありがとう。

4

1 に答える 1

7

ドキュメントに最も近いのは、この MSJ の記事です: Win32 構造化例外処理の深さに関するクラッシュ コース

基本的なプロトタイプのサンプルとしてこれを提供します(図 14から):

KiUserExceptionDispatcher( PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext )

実際には、PEXCEPTION_RECORD が最初のパラメーターではなく 3 番目のパラメーターにあるインスタンスも見てきました (少なくとも WinDbg の観点からは)。また、x86 と x64 の実装には潜在的な違いがあります。

AddVectoredExceptionHandlerを介して追加の例外ベクトルを追加できない理由はありますか?

追加資料: ボンネットの下: Windows XP の新しいベクトル化された例外処理

于 2014-01-07T23:15:18.447 に答える