ベクトル化された例外ハンドラーでは、次のようにスタック フレームをウォークスルーしています (32 ビット プロセスでは、FPO がないと仮定します)。
unsigned int *nextFrame;
unsigned int returnAddress;
__asm mov [nextFrame], ebp
while (!IsBadReadPtr(nextFrame, 8))
{
  nextFrame = (unsigned int *)*nextFrame;
  returnAddress = *(nextFrame + 1);
}
ただし、IsBadReadPtr数回繰り返した後、でアクセス違反が発生するため、停止条件が十分ではないようです*(nextFrame + 1)。
正しい条件は何でしょう?
更新:IsBadReadPtr例外が発生 (および処理) されるため、VEH ではまったく使用できないことが判明しました。
Update2最後に、「ヒューリスティック」を使用してフレームの終了位置を検出しようとしました。現在のフレーム ポインターを前のフレーム ポインターと比較し、その差が妥当と思われない場合はループを中断します。