トラップフラグ= 1を設定したいが、ポップアルゴリズムを使用しない。私はそれが可能であることを知っていますが、私はそれを理解することができません。ポップ命令を使用せずにトラップフラグを設定する方法
1
A
答えて
1
FLAGS
は、割り込みが発生したときにスタックにプッシュされ、IRET
によってスタックからポップされます。
42h
は、いくつかはそうされていない割り込みベクタである
handler:
push bp
mov bp, sp
or word ptr [bp+6], 100h
pop bp
iret
set_trap_flag:
push 0
pop es
mov [es:42h*4], offset handler
mov [es:42h*4+2], segment handler
int 42h
:あなたはまだPUSHF
許可されているのであれば、あなたはPUSHF
が許可されていない場合は、割り込みハンドラをインストールすることができ
pushf
pop ax
or ax, 100h
push ax
call far do_iret
...
do_iret:
iret
ような何かを行うことができます中古。
(注:コードはテストされていないため、構文エラーやバグがある可能性があります)
+0
あなたの答えには複数の問題があります! __(1)__ TFを設定するために間違ったマスクを使用しています。 __(2)__ IVTでは、セグメントの前にオフセットがあります。 – Fifoernik
+0
@Fifoernik:ありがとう、修正済み。とにかく、私は本当に答えが何よりも疑似コードであることを意味しましたが、とにかく感謝しています。 –
関連する問題
- 1. 擬似命令を使用せずにメモリアドレスをロードする方法は?
- 2. web.xmlを使用せずにJersey JSPTemplatePathを設定する方法
- 3. キャンバスレストパイのカールを使用してPUT命令を使用する方法
- 4. SSEプリフェッチ命令サイズを決定する方法は?
- 5. app.configを使用せずに.NET 4でwebserviceを設定する方法
- 6. ColdFusion 10 REST API:RestSetResponse()を使用せずにステータスコード201を設定する方法
- 7. PLD命令の使用
- 8. スタックスマッシングを使用して命令をスキップ
- 9. ヘルパーを使用せずにアクションを指定する方法
- 10. JavaScript:Object.definePropertyを使用せずに非エニュメラブルメソッドを定義する方法
- 11. アクセサリー関数呼び出しの代わりにユーザースタック用のシングル命令プッシュ/ポップ?
- 12. コンパイラがプッシュ/ポップ命令のペアを生成するのはなぜですか?
- 13. C64x + GMPY命令を使用してCRC32を計算する方法は?
- 14. イベントを発生させずにcheckbox.isCheckedを設定する方法
- 15. LLVM IRBuilder:特定の命令の後に挿入ポイントを設定する
- 16. ALTを使用せずにボタンニーモニックキーイベントを設定する
- 17. HttpServletResponseを使用せずにレスポンスコンテンツタイプを設定する
- 18. WebViewを使用せずにWebViewClientを設定する
- 19. 変換命令を使わずに整数にIEEE doubleを掛ける方法は?
- 20. DOMを使用して.innerHTMLを使用せずにHTMLテーブルの値を設定する方法
- 21. コンパイル時にamd_3dnow命令セットを除外する方法openssl
- 22. 角度指令に補間値を設定する方法は?
- 23. Handlebarsを使用せずにEmber.jsを使用する方法
- 24. ZEND_TOOL_INCLUDE_PATH指令の設定方法は?
- 25. 命令レベルプロファイリング:命令ポインタの意味?
- 26. テーブルを使用せずにこのページを設計する正しい方法
- 27. サイズを指定せずにiOSアプリ全体のカスタムフォントを設定する方法
- 28. Obj-Cメソッド命名法:設定方法
- 29. widthを指定せずにdivに "word-wrap:break-word"を使用する方法
- 30. コアサービスを使用してSDL TridionでXMLをロードせずにコンポーネントにコンテンツを設定する方法は?
なぜPOPFを避けたいですか?これはちょうどパズルか、いくつかの特定の制約がありますか?つまり、IRETを乱用してスタックからフラグをロードすることもできますが、これは不正行為のようです。 –
それはパズルです、私は答えを得ました、それはLAHFとSAHFの指示を使用しています。 – Clarskon
私は 'SAHF'について考えましたが、うまくいきません。 FLAGの下位バイト、すなわちビット0-7にAHをロードする。トラップフラグはビット8で、 'SAHF'によっては触られません。 –