导致x86汇编中溢出的idiv指令的最小值

时间:2016-10-11 16:55:18

标签: assembly x86

我正在编写一个程序来练习一些逆向工程技术。以下是x86(英特尔)汇编代码的相关行:

mov, eax [ebp - 20]
cdq
idiv ecx

通过我的输入(网络套接字),我可以在执行这些汇编行之前控制进入eaxecx的字节。

我的问题是:我可以使用什么最小值(正或负)来引起除法溢出(除法溢出不是"除以零"错误但结果是返回大于32位,因此不适合eax(返回寄存器)。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

由于你的被除数是32位,并且被cdq符号扩展到64位,所以获得溢出的唯一方法是由于二进制补码的不对称性,即它可以表示-2^31但不是+2^31。因此,您可以-2^31 / -1