标签:
来源: 360 CTF 2014 Reverse20
说明:已在压缩包中给定了一个用ReverseMe.exe加密过后的文件:密文.db请分析ReverseMe.exe的算法,写出解密算法,解密该文件得到Key。该Exe里有一个bug,导致exe无法运行;
提示:
你有两种方法得到该Key:
1.找到bug,patch掉之后,运行两次该程序即可解密文件得到key。
2.老老实实的逆这个简单的算法,写出一个解密程序,解密。
?
解题思路:
用od载入程序,运行提示参数错误
猜测参数应该是一个文件名,那这里就填入pass.db,重新运行出现异常,这个应该就是题目中所说的bug。
那么就直接用ida6.6打开文件,按Ctrl+F5反编译一下,得到如下主函数
可以看出程序从文件中读入数据然后调用了sub401000函数进行处理
函数的意图很明显,就是用0x73686974对原始字符串进行异或处理,剩余的部分在用0x73进行异或处理,因此可以得到如下的方法求解flag
由于内存中字符有逆序存储的方式,所以这里应该倒过来写。最后运行一下即可获得答案。
?
?
@Reference:周鹏(室友你的博客是多少……)
标签:
原文地址:http://www.cnblogs.com/windcarp/p/4431500.html