IDA从软件生成以下反汇编代码: br />这是检查ebx是否为负数,还是查看加法运算得出的值是否高于ebx的方法。 br />

#1 楼


我们检查eax是否小于或等于ebx


否,cmp ebx, eax; jbe ...检查ebx <= eax,而不是相反。

评论


ugg,编辑了问题

–埃里克
2014年12月13日下午4:50

这里的问题实际上是如何才能将ebx添加到eax中以使eax低于ebx

–埃里克
2014年12月13日下午4:50

zh.wikipedia.org/wiki/Integer_overflow

–詹森·格夫纳(Jason Geffner)
2014年12月13日下午5:06

所以这是一个溢出检查,还有其他方法可以解释这些操作吗?

–埃里克
2014年12月13日下午5:09

这里的问题确实是,如何仅当eax环绕并变为零(即eax = 0xffffffff和ebx = 1)时才可以将ebx添加到eax中,从而使ebx低于ebx,即在eax上添加ebx将eax变为0,然后在ebx之下将eax组装到位并执行,当达到ebfe时,您可以观察到esi = 0xffffffff MOV EAX,0 MOV EBX,1MOV ESI,EAX AAD EAX,EBX CMP EBX,EAX JBE SHORT 063FB2 JMP SHORT 1063FB0 JMP SHORT 01063FA8

– blabb
2014年12月13日7:17