题目(二):
【题型】Reverse
【题目】reverse1
【来源】(buuoj)https://buuoj.cn/challenges#reverse1
【思路】先用Exeinfo PE查壳,再用IDA Pro进行逆向分析。
【具体步骤】
Step1:首先对程序运用Exeinfo.Pe进行查壳,发现程序是64位的并且不加壳的,所以不用脱壳。
Step2:因为不用脱壳,所以直接放在逆向软件IDA64 Pro下进行查看程序。
Step3:首先查看字符串,在view里面选择open subviews再选择strings,然后出现文本中的字符串。
Step4:查看字符串里面有一句flag的字样,双击进入这个语句
Step5:然后右键点击List cross reference to进行定位,然后再次右键里点击List cross reference to进行定位,然后发现一串类似于flag的字符串。
Step6:点击F5,然后查看伪代码(如果按键被占用,用F5+Ctrl),根据伪代码猜测,if语句里面的sub_1400111D1应该是printf,外面的应该是scanf函数,所以当字符串str1与str2相等时生成flag。Str1是自己输入的字符串,所以查看str2的生成规则。
Step7:点击str2,发现未进行变化前的为hello_world,然后继续查看伪代码,发现for循环中对str2进行了变化,for循环将字符串中ASCII码为111的全部替换为了48,查找ASCII表发现是将o替换成了0,所以得到的str2为hell0_w0rld。得到flag。