下载后用 IDA 打开在左侧函数列表中点击 main 函数解析代码__int64 __fastcall main(int a1, chara2, chara3)标准的主函数入口a1对应argc参数个数a2对应argv命令行参数数组a3对应环境变量。这道题是命令行传参的形式不是控制台输入。char *s1; // [rsp18h] [rbp-8h]定义一个字符指针s1用来存放对输入进行处理后的结果。s1 (char *)sub_124C(a2[1], a2, a3); 这是最关键的一行a2[1]你运行程序时在命令行传入的第一个参数也就是你猜测的 flagsub_124C程序自定义的处理函数结合题目名base64这个函数的功能就是对输入字符串做 Base64 编码执行完后把编码后的结果赋值给s1if ( !strcmp(s1, s2) )printf(“This is flag!!”);elseprintf(“This is wrong”);strcmp(s1, s2)是 C 语言标准字符串比较函数两个字符串完全相等时返回0!strcmp(...)就是 “如果两个字符串相等” 的意思s2是程序里硬编码的正确密文字符串Base64 编码后的结果逻辑你输入的内容经过 Base64 编码后如果和内置的s2完全一样就提示正确关键函数是 sub_124C再点击该函数猜测是 Base64 编码算法。果然是标准的 Base64 编码写解密脚本由于是输入的参数经过 Base64 编码后与s2进行比对所以先获取s2的值解密脚本importbase64# 程序内置的Base64密文cipher_textTlNTQ1RGe2Jhc2VfNjRfUTRaR0ROQzdOfQ# 标准Base64解密flagbase64.b64decode(cipher_text).decode(utf-8)print(解密得到的flag,flag)运行