xcj123 发表于 2023-11-13 22:04

一道reverse题目的wp的疑惑

问题一:在wp中
flag = (((data ^ (data >> 15)) >> 15) & 0xfffffffc) | (data & 0x3);
为什么要第二次左移15位,并且异或0xfffffffc 再与 (data & 0x3)
问题二:
final = (*((char*)&flag + i)) & 0xff;
与 0xff向与是为了变成无符号数吗?

BonnieRan 发表于 2023-11-14 00:21

问题二:
& 0xff 超出Ascll值截取高位,不知道对不对

codezhang 发表于 2023-11-14 10:23

你的数据是64位,每4位对应一个字母表示的话,例如用ABCD表示数据
data >> 15      数据变为0ABC
data ^ 0ABC   等价于   ABCD ^ 0ABC    等价于         A(B^A)(C^B)(D^C)
>> 15    等价于   0A(B^A)(C^B)
& 0xfffffffc    等价于   0A(B^A)(C^B) 的最后两位归0
| (data & 0x3) 表示最后两位还是用D里面的最后两位


问题二:有没& 0xff 结果都是一样的,(*((char*)&flag + i))这个类型就是char, 没高位可以截取


xcj123 发表于 2023-11-14 17:45

codezhang 发表于 2023-11-14 10:23
你的数据是64位,每4位对应一个字母表示的话,例如用ABCD表示数据
data >> 15      数据变为0ABC
data ...

好的谢谢
页: [1]
查看完整版本: 一道reverse题目的wp的疑惑