题目(七):
【题型】Reverse
【题目】reverse3
【来源】(buuoj)https://buuoj.cn/challenges#reverse3
【思路】先检查是否带壳,然后进行逆向分析。
【具体步骤】
Step1:打开程序。
Step2:用exeinfoPE先查看是否带壳,not packed,没有加壳。
Step3:将程序放在IDApro这个逆向分析软件下进行逆向分析。
Step4:先找到main_0函数,然后按下F5查看伪代码(如果键被占用,用Ctrl+F5)。
Step5:观察伪代码发现当Destination与str2相等时,得到flag。
又因为Destination经历了一个循环得到的改变后的为str2。点击str2,看到str2的字符串。
Step6:先编写脚本得到Destination,即将反向经历循环。
源码:
#include <stdio.h>
int main()
{
char str[] = "e3nifIH9b_C@n@dH";
int i;
for (i = 0;i < 16;i++)
{
str[i] = str[i] - i;
}
printf("%s", str);
return 0;
}
Step7:又因为Destination是由v4来的,所以我们进入sub_4110BE函数,查看发现函数是base64加密,所以我们需要进行base64解密。
Step8:将字符串放到在线网页下进行解码,得到flag,在线网页为:
https://www.toolhelper.cn/EncodeDecode/Base64EncodeDecode