(这里是个解题的分界,涉及到了java,以后还会碰到py)依旧查壳。

java的一般都是64位,按照老套路扔进IDA中,你会发现,你看不懂它在干嘛了,而且没有伪代码给你看了,因为IDA无法反编译java的文件,我们需要另一个软件jadx-gui来进行对java文件的反编译。拖进工具里,如下:

简单的一个暴力枚举就可以了,脚本如下:(这里就不解释里边的函数作用了,java应该都会吧)

int main(){
    string flag = "";
    int KEY[] = {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++) {
        for (int j = 32; j <= 126; j++) {
            if(((j + '@') ^ 32) == KEY[i]){
                flag += char(j);
                break;
            }
        }
    }
    cout << flag << endl;
    return 0;
}

得到flag{This_is_the_flag_!}收工。