IDA破解最简单的登陆框
原创文章,转载请注明出处:http://www.cnblogs.com/justinzhang/
还记得当年本科的时候,一大群人围着一个国安的登陆框在哪儿破解。其实自己对安全方面的东西了解的非常的少,最近遇到一个非常牛逼的UML工具,可惜没有源代码、没有文档,在这种霸道的封杀之下,又点燃了学习反汇编&破解的热情。虽然这是一个非常非常简单的例子,但这是自己多年以来想做的事情,今天终于动手做了,也没有什么遗憾了~~
首先,自己写了一个MFC程序,包含用户名和密码两个文本框,一个确定按钮,如果密码和用户名匹配,则弹出succ对话框,如果不匹配则弹出fa对话框。由于自己已经快一年没有写MFC了,所以这里记录下这个弱智的步骤。
1>新建一个MFC应用程序工程,选择对话框应用程序。
2>往对话框上拉两个text lab和两个Edit Control.
3>双击确定按钮,在按钮的事件里添加如下代码:
void CLogONDlg::OnBnClickedOk()
{
CString name,pass;
GetDlgItemText(IDC_EDIT1,name);
GetDlgItemText(IDC_EDIT2,pass);
if (name.Compare(CString("justin"))==0 && pass.Compare(CString("111"))==0)
{
MessageBoxA(NULL,"succ","succ",MB_OK);
}
else
{
MessageBoxA(NULL,"fa","fa",MB_OK);
}
最后的对话框如下所示:
现在我们要做的就是,用IDA获得正确的用户名和密码。
用IDA打开LogON.exe
在Strings中有该程序所有的字符串:
我们可以逐一的查看,很容易发现可疑的字符串,双击可疑的字符串,可以看到如下所示的内容:
我们尝试justin和111即可以等到正确的用户名和密码,虽然这个程序是自己写的,自己破解,听起来似乎很可笑,但是仔细想想就知道,用MFC写的程序,用这种方式来判断用户名和密码是否正确是非常不安全的,因为只需要用IDA反汇编,不用付出很大的代价就可以获得用户名和密码。至于如何避免这种情况,自己也正在学习当中。路漫漫其修远兮~~~今晚到此为止,开始MDA的工作了~~