题目:我方截获了敌方的一款加密程序和一段密文(密文为:F2F5D39F18D762B7),尝试通过对此程序进行分析实现对密文的解密,解密后明文的32位小写MD5值作为flag提交。

1.先运行一发,运行截图:

图片1.png

2.扔进OD,搜索字符串,发现,咦,内有乾坤。

图片2.png

3.经过成吨的分析(本人鶸一只),发现题目给出的密文应该是经过打开程序时的默认加密方式加密的,那么,现在就要找到默认加密方式。

4.直接肛,强行跳到加密的地方

图片3.png

至于怎么跳,随便找个地方跳过去,我选择的改输入选项,把退出系统改成跳到自定义加密。 //反正我是来逆向的,程序boom了也没事。(雾

图片4.png

在这后面下断点,看它怎么跳的。

图片5.png

如果输入为2,push返回值0,call exit。 把参数干掉,call自定义加密解密:

图片6.png

图片7.png

图片8.png

跳过去了,然后下断点找到自定义加密是的函数。 Case 1 ,call了这个函数,跟过去。

图片9.png

加密函数就在这中间,在最后一次输入(输入密钥时)后面下断点仔细找找,找到了就跟进去。

图片10.png

这密密麻麻的运算,看来就是它了。

图片11.png

找到return的地方,往前下断点。

图片12.png

就是这儿,下断点,然后重新运行选择默认加密,随便加密一个就能看到密码是啥了。

图片13.png

这就是密码了。

图片14.png

再选择自定义解密。

图片15.png

直接在这儿看,或者看程序运行结果都可以。

图片16.png

然后拿去md5大法。就可以提交flag了。