點贊後看,養成習慣
喜歡的話 可以點個關注喲
你們的點贊支持對博主們來說很重要哦 !!!
00 前情提要
該CrackMe是我本學期,計算機病毒老師給出的實驗題,通過學習看雪論壇技術教程帖子以及請教大牛同學,收穫了一些關於逆向分析的要點。現將分析筆記列出。
01 題目描述
CrackMe,即破解我的意思,鼠標右鍵點擊屬性查看詳細信息,初步判斷該可執行文件是一個用來練習破解的軟件。
雙擊打開CrackMe,軟件顯示如下圖所示:
02 破解步驟
1、根據難度提示信息,發現可以採用暴力破解破解該密碼,沿着這個思路走,先嚐試常用的弱口令進行登錄。
多次嘗試無效後,嘗試其他思路。
2、既然弱密碼嘗試無效,那我們嘗試crack它。逆向分析的時候,我們首先查看該軟件是否加殼,在這裏我們使用從吾愛破解論壇上下載的查殼利器——Exeinfo PE。
打開查殼軟件,軟件頁面顯示如下:
將CrackMe文件載入Exeinfo PE中,得到如下信息
分析查殼結果可知,該CrackMe沒有加殼,編寫語言是Microsoft Visual C++ 9.0 - Visual Studio 2008 (E8)
3、根據上述所得信息:因爲軟件沒有加殼,自然我們就不用對軟件進行脫殼處理。所以我們直接使用OD對CrackMe進行分析。 打開OD軟件初始化界面如下:
載入CrackMe文件信息後,軟件顯示如下圖所示
接下來,我們關注左上角這個大框框,它的名字叫反彙編窗口,意思就是這個程序已經被反彙編了,代碼都在這裏。
緊接着我們進行,斷點調試
然後在反彙編窗口右鍵查找,選擇查詢文本、字符串內容
查找結果如下
紅色字條上一條雙擊,然後就回到了反彙編窗口,並且光標停留在了一條語句上,鼠標滾輪向上滾幾行,然後,就看到了,CrackMe的相關代碼。
觀察相應代碼,試圖瞭解程序執行流,並經過彙編方式重新定義判斷條件,使得無論輸入密碼爲真還是爲假,條件判斷爲永真式。
嘗試多次無效後,請教同學,發現是自己的文本信息找錯位置了,我們可以通過插件萬能API斷點定位來找到相對應的位置(以下截圖來自大牛同學)
單步步過查看堆棧信息
溯源堆棧信息 找不到 定位不到父程序 關鍵斷點
對話框斷點-MessageBoxA:
OD 執行bpx MessageBoxA命令設置斷點
觀察堆棧返回的信息
對話框MessageBoxA函數返回的參數爲
Retn返回後到這個位置
然後,將JNZ改成JE,也就是置反,但是這樣改的話等到你輸入了正確的驗證碼卻會出現錯誤的提示,輸入錯誤的驗證碼就提示正確
保存保存修改後的文件
輸入任意密碼,提示密碼正確
以上文章,作爲自己的學習筆記,僅供參考
本文完,感謝你的閱讀!!!
最後,如果本文對你有所幫助,希望可以點個贊支持一下。你們的鼓勵將會是博主原創的動力。