正常顺序,我习惯于用die这个软件查看,因为看着简便。
然后接下来用IDA打开

很明显这就是一个很普通的xor题。我们直接看,他写了v7【10】,而这个数据他是用的8字节,但是我们往后看,我们的flag(v9)是byte*+4说明他是char类型,然后循环41次说明我们的flag是41位。
很显然那句话是用来检查我们输入的flag是否是41位长度。然后接下来就开始解密环节
我们可以看见后面you are right!我们倒着看,v7以byte去进行运算,所以我们v3是从0到41一直+,然后(flag^0x32)-86的等于v7
然后我们写解密代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<Windows.h>
int main() {
int v3 = 0;
int v7[10] = { 0x09FDFF04, 0x00B0F301, 0xADF00500, 0x05170607,
0x17FD17EB, 0x01EE01EA, 0xFA05B1EA, 0xAC170108,
0xFDEA01EC, 0x060705F0 };
char flag = 0;
for (v3=41;v3 >=0;v3--) {
flag = (*((char*)v7 + v3) + 86) ^ 0x32;
printf("%c", flag);
}
return 0;
}
2071

被折叠的 条评论
为什么被折叠?



