一、工具:
1、IDA
二、解题过程:
①、载入64位IDA
②、在函数窗口中找到 main 函数
分析后发现 patch_me 这个函数是关键点
进去后发现 get_flag 这个函数
浏览分析代码得知这个函数就是解出flag的关键函数
③、代码详解
strcat((char *)&s, f1);
strcat((char *)&s, &f2);
printf("%s", &s);
由代码 s = f1 + f2
f1 可以找到,而 f2 却不行:
虽然前面代码无法直接找到 f2 ,但往下分析代码发现
s => f2 所以 f2 = icug`of (这里要注意大小端存储问题,在之前的文章SimpleRev里我已经分析过了) ,因此猜测这里的 f2 经过下面循环处理后得到的字符串与 f1 拼接即为正确的 flag
④、写脚本分析
所以最终 f2 = hate_me
所以正确的flag :flag{do_not_hate_me}