私は、いくつかのリバースエンジニアリング技術を実践するプログラムを書いています。アセンブリのこれらの行が実行される前に、私はeax
とecx
に入るバイトを制御することができ、私の入力を通じx86アセンブリでidiv命令がオーバーフローする最小値
mov, eax [ebp - 20]
cdq
idiv ecx
(ネットワークソケット):ここでのx86の関連する行(インテル)アセンブリコードです。
私の質問は:分割オーバーフローを引き起こすために使用できる最小値(正または負)は何ですか(除算オーバーフローは「ゼロ除算」ではありませんが、結果はより大きい32ビットおよび、それゆえよりも、あなたの配当は32ビットであるので!
はあなたの助けのために事前にありがとうございます。eax
(リターン・レジスタ)に
このような入力はありません。すべての結果が適合します。実際には '-2^31/-1'はできません:) – Jester
@harold最小正または負の値として最小値を定義したいと思います。オーバーフローが発生します。完全な虚偽の例として、0xff/3と0xff/2が両方ともオーバーフローを引き起こした場合、私は0xff/2を最小値とみなします。 – jkovba
@ Jesterそこにあなたの提案について考える必要がありますが、64ビットの量を32ビットの量で除算すると、除算のオーバーフローが確実に起こります。しかし、これは乗算の場合ではありません。 – jkovba