問題タブ [seh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - int3(VEHまたはSEH)の使用方法
割り当てゾーン(VirtualAllocateEx)にジャンプするfunction prologue
ために置き換えたいことを知っています。jmp
しかしfunction prologue
、3バイトとjmp
5バイトだけです。このような:
jmpを使用して関数プロローグをカバーしたい場合は、関数プロローグの後の3番目の命令をカバーする必要があります。
だから、関数プロローグの代わりにint3を使用して、割り当てゾーンまたは任意のアドレスにジャンプしたいのですが、どうすればよいですか?
VEHやSEHを使ってみましたが、どうやって作るのかわかりません。
c++ - C2712:オブジェクトの巻き戻しが必要な関数で__tryを使用できません
VC++6.0で作成されたソフトウェアをVS2010/ VC++2010に移行しています。デバッグモードでコンパイルされないプロジェクトがあります。私は持っています:
__tryについては何も言及していません
分かりませんか?
windows - アセンブラーの far 呼び出しとヘブンズ ゲートについて、例外をトリガーするセグメント呼び出しは、例外がスローされる前に cs と eip をプッシュしますか?
現在、私は「天国の門」として知られる Windows/WOW64 トリックで遊んでいます。おそらくご存知の方もいらっしゃると思いますが、x86 プログラムであっても x64 モードに入ることができます (テストしたときはとても驚きました)。そしてそれはうまくいきました!)しかし、すべてのWindowsバージョンでサポートされているわけではないことがわかっているので、私のコード(コードがあるため)はsehを使用しています。次のようになります:
単純な「jmp .exit」でうまくいくことは知っていますが、それについて非常に興味があります
delphi - C++ Builder で安全な例外処理を有効にする
Windows 8 アプリケーションの認定には、(特に) 次の要件があります。
- 3.2
/SafeSEH
安全な例外処理を保証するために、フラグを使用してアプリをコンパイルする必要があります - 3.3
/NXCOMPAT
データの実行を防ぐために、フラグを使用してアプリをコンパイルする必要があります - 3.4 アプリは
/DYNAMICBASE
、アドレス空間レイアウトのランダム化 (ASLR) のフラグを使用してコンパイルする必要があります
C++Builder XE でこれらのいずれかを有効にする方法を見つけることができませんでした。
/NXCOMPAT
とについては、VS またはCygwin から/DYNAMICBASE
使用できます。これらを有効にするネイティブな方法があれば、副作用の可能性についてもっと自信を持っていると思います.editbin.exe
peflags.exe
とにかく、私は完全に途方に暮れてい/SafeSEH
ます。
windows - Windows32 API: 関数エントリで「mov edi,edi」?
Windows 7 で構造化エラー処理の回復コードを実行しています (たとえば、SEH ハンドラーが完了して "CONTINUE" コードを返した後に何が起こるか)。呼び出される関数は次のとおりです。
「push ebp/mov ebp,esp」の関数プロローグには慣れています。「mov edi,edi」の目的は何ですか?
c++ - __HeapFree で例外をキャッチしないようにする
私はHeapFree
例外をキャッチしようとしています..
MSDN ではHeapFree
、すでに解放されているポインターを解放しようとすると、未定義の動作が発生すると言われています。さて、私はVS2010でそれを試しましたが、ブレークポイントを「スロー」し(Windowsがブレークポイントをトリガーしました)、次に例外(ヒープが破損しました)
_ try/ _except でそれをキャッチしようとしていますが、トリガーされていません:
この例外をキャッチするにはどうすればよいですか? 通常の try/catch も機能しません。何が起こっているのかわかりません。解決策自体よりも説明に興味があります。
winapi - 特定の関数で/EHscを使用して/EHaの利点を得る方法は?
extern "C"
プログラム内の特定の関数(たとえばRaiseException
)がSEH例外を発生させる唯一の関数であり、それらをC ++例外に変換したい場合/EHa
、その関数を「選択的に有効にする」方法はありますか。例外は、通常は?によって引き起こされるCStructured_Exception
ように、プログラムの残りの部分を肥大化させたり遅くしたりせずに変換されます。/EHa
c++ - _set_se_translator の「get」に相当するものは?
現在のトランスレータを使用して、構造化例外を手動で翻訳する必要があります。
誰かが設定した値を「取得」するにはどうすればよい_set_se_translator
ですか?
windows - Visual Studio 2010 のプログラム データ ブレークポイント
デバッグレジスタを直接設定するために、CBreakpoint
例のように、プログラムによるデータブレークポイントを使用しようとしました。SetThreadContext
私が見つけることができるほとんどの参照は、データ ブレークポイント自体を設定していなくても、Visual Studio がデータ ブレークポイントに遭遇するたびに中断することを示しています。ただし、これは Visual Studio 2010 の動作ではないようです。
プログラムがデバッグされていないときにデータブレークポイントが完全に機能する状況にあります (STATUS_SINGLE_STEP
データブレークポイントによって発生する例外である でクラッシュします)。WinDbg でデバッグしている場合も、正しく壊れます。しかし、いずれかの Visual Studio 2010 でデバッグすると、追跡を続けてブレークポイントを無視しているように見えます。Windows 7 で、Visual Studio 2010 でプログラムによって設定されたデータ ブレークポイントを使用した経験がある人はいますか? それらを壊すために私がする必要があることはありますか?STATUS_SINGLE_STEP
( 「最初の例外」リストに追加しようとしましたが、動作に変更はありません。)
STATUS_SINGLE_STEP
または、デバッガーで例外を飲み込むために私が行っていることはありますか? 構造化された例外ハンドラーは、デバッガーがそれを見る前に例外を食べますか? これが x86_64 プログラムであることによる影響はありますか? Visual Studio 2010 の設定で行う必要があるダンスはありますか?
c - __tryおよび__exceptionの移植性
こんにちは、また失礼します
Intelの「IA-32アーキテクチャでのマルチプロセッサトポロジの検出」を読んでいます。私は例を書き直していました。しかし、私はこの文を__tryと__exceptのコードで読みました。
MSDN Microsoft Webページにいくつかの情報が見つかりましたが、gccコンパイラ/リンカーを使用しています
__tryと__exceptはgccの有効な文ですか?__tryと__exceptは*nux環境でのポータブルセンテンスですか?Cでの例外処理のために__tryおよび__except文よりも優れたモードが存在しますか?
前もって感謝します。