原創文章,轉載請注明出處: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的工作了~~