过程:
1.下载 得到一个无后缀文件
2.拖入IDA64 按F5 反汇编
观察到12行是异或运算 13行有__b与global字符串比较
推测该程序流程是 输入字符串 __b 进行异或操作 再与global比较 若一致,则打印 Success
3.所以现在要查看global字符串 双击global 再双击标黄的地方 转到该字符串的位置
4.按一下这 aFKWOXZUPFVMDGH 然后按SHIFT+E 导出字符串
5.得到了异或之后的字符串 由异或的性质 任何数对同一个数异或两次后都等于自身 可知 只需把global字符串再按原来的方式异或一下 就能得到flag
6.写代码 进行异或
#include <stdio.h>
int main(void)
{
unsigned char aFKWOXZUPFVMDGH[] =
{
102, 10, 107, 12, 119, 38, 79, 46, 64, 17,
120, 13, 90, 59, 85, 17, 112, 25, 70, 31,
118, 34, 77, 35, 68, 14, 103, 6, 104, 15,
71, 50, 79, 0};
unsigned char a[34];
for (int i = 0; i < 33; i++)
{
a[i] = aFKWOXZUPFVMDGH[i] ^ aFKWOXZUPFVMDGH[i - 1];
}
printf("%s", a);
return 0;
}
得出flag: flag{QianQiuWanDai_YiTongJiangHu}
结束。