惯例查壳
JAVA文件 其实在解压完后看到.class后缀就知道是JAVA文件
用JADX打开 找到main函数
观察函数结构,其主要功能:
将输入的字符+‘@’后与32异或 如果结果和KEYLIST中的数相等,说明输入的字符就是flag
了解程序运行过程后,开始写脚本
注: 异或(^)的特点 异或两次数据不变
#include<iostream>
using namespace std;
int main()
{
int var[]={180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};
for(int i=0;i<18;i++)
{
var[i]=(var[i]^32)-64;
cout<<(char)var[i];
}
return 0;
}
所以flag为:
flag{This_is_the_flag_!}