逆向过程中 遇到的一个小问题
mov eax, r15dshl eax, 31
eax的值为d34805e8 左移31
windows计算器得出结果为
ida里单步调试 得出的结果为0
通过易语言来逆向
d34805e8 转为十进制是3544712680 左移31 结果为7612212517158256640
通过windows计算器计算十进制左移31 得出的结果又是一个值
彻底蒙圈了求大神来给讲讲。。。 这是我计算的,供参考 EAX 是4字节 你把 QWORD 切换到 DWORD 复现了下,楼主第一次计算器操作,是在十六进制下输入的
d34805e8,然后左移动0x31位,问题很明显,16进制下的31转十进制是49位,所以就导致了第一次和第三次计算器的运算结果不同
在来解释下第二次为什么是0,因为eax只能放4个字节,1字节=8位,所以eax是32位,运算的结果只取低32位,高32位舍弃(不知道这样说对不对),而你计算器能放64位,所以导致了结果不同
第三次就是64位寄存器左移31位的运算结果
页:
[1]