逆向工程之表达式优化识别(5)-取模

取模优化

取模运算是得到除法运算之后的余数的运算,这里简单提一下其相关的优化
示例:

mov eax, VAL
and eax, 8000001F
jns LAB1
dec eax
or eax, FFFFFFE0
inc reg
LAB1:

说明:这是一取模运算的示例,VAL是被除数,and的立即数是一个掩码,用来去掉高位保留地位,根据保留的低位数量,可以得到2^k次方的k,所以这里也就是一个x%(x^k)的取模运算

示例2:

mov eax, VAL
cdq
and edx, 1F
add eax, edx
sar eax, 5
shl eax, 5
sub VAL, eax

这也是一个取模运算,区别在于这是一个没有分支语句的取模运算,主要思路是余数 = 被除数 - 商 * 2^k的,可以自行分析,写出表达式,应该难度不大了。

你可能感兴趣的:(android,security,C/C++)