这个逆向题 现在我看来是没有错的 我翻了一下 别人写的题解 和我的一样 应该就是 后台又出问题了
其实这个也没有什么难题 就是一个简单的 异或 难就是难在怎么分析
我们先看
这里面来看也不是很难
然后 我们一步一步分析
这里的初始化 应该是将 a+16 这个地方被赋值我们的输入 而 a+32 被赋值为 FLAG23456912365453475897834567
然后 我们接着往下分析
这里就是处理我们输入的内容
然后看下面的判断 函数
到这里就很明了 就是 处理完之后 来比较那个字符串
然后我们 反推就行了
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
#include<map>
#include<time.h>
#include<math.h>
using namespace std;
char s[]="FLAG23456912365453475897834567";
int main()
{
printf("Flag{");
for(int i=0;i<strlen(s);i++)
{
printf("%c",(((s[i]-9)^16)-20)^0x50);
}
printf("}");
return 0;
}