私はマルチプラットフォームのC++ファジーアプリケーションを開発しています。アプリは子プロセスを生成し、それが突然停止したかどうかをチェックします。私はすでにLinux上でこれを行うことができましたが、Windowsの例外処理の仕組みは私には難しいことです。Windows上で子プロセス例外をキャッチ
私のコードは今すぐ次の処理を行います。 - CreateProcessを呼び出してプロセスを起動します。 - WaitForSingleObjectが終了するのを待機する。 - GetExitCodeProcessを呼び出して、終了コードが例外に対応するかどうかを確認します。
すべてが正常に動作します。私はヌル逆参照テストアプリケーションでテストしましたが、例外を正常にキャッチできます。しかし、私がこれをテストするたびに、Windowsエラーメッセージボックスが表示され、エラーレポートを送信するかどうかを伝えます。 fuzzerは自動テストアプリケーションであるため、この通知を無効にする必要があるため、例外が検出されてもfuzzerはテストを続けることができます。
私は既にSEHハンドラをインストールしようとしましたが、運がありませんでした(明らかに、これらのハンドラは子プロセスに継承されません)。ベクタリングされた例外処理の使い方を読んだことがありますが、同じであると仮定します。ベクターハンドラは継承されていないと思います。
誰でもこの問題を解決できますか?私は何を探すべきかわからない、私はすでに多くのグーグルで探検していて、何も見つけていない。
ありがとうございます!
答えをありがとう!私はいくつかのデバッグAPIを使用することを考えていましたが、いくつかのアンチ・デバッグ・メカニズムを使用してクラッキングや反復を回避するアプリケーションが、ファジーによってデバッグされていることを検出すると、私は別のオプションを見つけることができない場合、私はこのデバッグのメカニズムを使用する必要がありますと思います。 – mfontanini
コードをリバースエンジニアリングしようとする人々を撃つためにはるかに多くの理由があります。 –
それは働いた!ありがとうたくさん:D – mfontanini