在比较函数中,我将如何求解变量num
,它将是我自己对程序的输入?
主要功能(部分)
int input;
answer = compare(input);
if(answer !=0xb88202) {
printf("Keep trying!");
exit(0);
}
puts("You got it");
比较函数
uint compare(uint num) {
return (num ^ 0x735) >> 4 ^ 0x6f0;
}
老实说,我不知道该怎么做。我想用另一个异或来反转异或会有帮助。我也试着用4 ^ 0x6f0
左移0xb88202
,但我就是想不通。
2条答案
按热度按时间hgncfbus1#
只需在比较函数中反向操作即可。
bvn4nwqk2#
把它当作一个方程求解。你有
异或是它自己的逆运算,所以你得到
对于移位来说,这并不完全正确,因为右移位丢失了左移位无法恢复的位(从底部移出),但这只是意味着
num
有多个值,这些值将给予answer
,这将找到其中的一个。