Hide and Seek
解题思路:
- F5查看main函数,发现输入的字符串在byte_61E080,对输入字符串的处理在sub_400647()函数中,但是跟进发现算法复杂,不好分析。
- 在数据区对byte_61E080按F2下内存断点,然后启动动态调试。根据对主函数的分析,我们发现需要两次F9就会进入对字符串处理的算法中。在此时的RIP附近找到push rbp和retn,C键,P键,建立函数后F5。
- 发现对输入的第一个字符进行了一个三次计算,然后与v0比较,然后进入自解密。我们可以通过解这个一元三次方程得到flag的第一个字符为’E’。
34 * byte_61E080[0] + 3 * byte_61E080[0] * byte_61E080[0]+ 120 * byte_61E080[0] * byte_61E080[0] * byte_61E080[0]+ 12=39437721
- 查看汇编代码,发现自解密后,调用sub_414896()函数,C键,P键,F5,发现这个函数又对第二个字符进行了一个三次计算,然后与v0(两个v0大小不一