【解题流程和思路】
下载之后发现是一个windows窗口程序,先尝试使用od对其进行破解,但是发现这个加密的方法太过困难了。定位到加密函数的时候并不是自己所想的那个样子可以直接得到加密函数的源代码,在他的加密函数当中嵌套了一个函数,在函数当中又进行嵌套,反正在ida当中是很难解出来的
那么这个时候最好的办法是使用动态调试器od了
od载入程序之后,搜索字符串在输出wrong和right的地方停下来。往前面查看可疑的对比处,首先注意到的是一段奇怪的代码,估计我们的比较和其有关,
![](https://i-blog.csdnimg.cn/blog_migrate/ffeffc43471ac1c74edfc21090bb7aa9.png)
在这里下断点,大概猜测是将我们输入的字符串与内存中的数值进行比较下断点运行
要求输入字符串
输出测试字符串,尽可能大以免不够,发现下方的窗口出现
![](https://i-blog.csdnimg.cn/blog_migrate/c1453ccdf812a6e18df760d2ffa74406.png)
重复f9,这里出来的字符每次都不一样,猜测这里已经将字符串进行解密了对比,所以我们记录字符串
在ida中可以知道flag有17位
记录到合适位置的时候使用f7,避免跳过
这个时候出现的字符串大概形式是和flag形式很像了
但是并没有}所以继续观察,后面还有对比。
![](https://i-blog.csdnimg.cn/blog_migrate/106e5b4e32a55e20df05718cb3fe7b46.png)
查看十六进制对应的ascii码添加到之前的fiag之后得到最终flag