破解了traceme.exe以後(https://blog.51cto.com/181647568/2421560),我認爲traceme.exe主要是《加密與解密第三版》裏主要用於講解ollydbg怎麼用的。中途已經從不一樣的角度破了好幾回了,我在嘗試破解的時候已經對exe有了必定的瞭解,可能直接跳過了檢測的部分,因此我打算再搞一個cm程序來從頭開始破解起。app
我找的是從吾愛破解裏下載的「適合破解新手的160個crackme練手」中的第一個程序:Acid burn.exe。ide
下載地址:https://u19693866.ctfile.com/fs/19693866-388387338測試
軟件打開後先是彈一個信息框
搜索引擎
而後點擊肯定後出現的界面是這樣的。加密
基本上就是這三個按鈕,其中第一個就是和traceme.exe差很少的,輸入用戶名後,再輸入序列號比對。spa
第二個按鈕就是退出程序。.net
第三個按鈕只有一個輸入序列號的界面。我一開始是的是右邊的按鈕。3d
我看到裏面有一個編輯框,我固然輸入測試的序列號123456,而後點擊按鈕check it baby!而後顯示失敗,彈出了信息框提示「Try Again!!」blog
那麼我感受這個cm和traceme.exe差很少,那我就故技重施,用ollydbg打開acidburn.exe而後,將斷點設置在GetDlgItemTextA,不過此次和traceme不同,此次雖然程序有中止,可是我一旦按下F8(單步步過),不久就彈出了Try Again!!的彈框。而後我就無法繼續下去了。索引
後來又在網上找了一下資料。看到這篇文章
https://blog.csdn.net/plus_re/article/details/53248142
這篇文章依舊使用了《加密和解密》中的另一個exe文件,破解的方法是在程序一開始進入的地方就加入斷點,而後憑此瞭解軟件的運行現象,而且在彈出信息框以後,經過搜索信息框裏的字符串,而且找到這些字符串所在的地方,在附近加斷點,查看運行狀況。固然文章的做者在這個過程當中已經看出了用戶名和序列號的對應關係了。我認爲能夠用他的方法來嘗試破解。
首先是用ollydbg打開了軟件,在程序第一個地方我就打了一個斷點,而後也用F8讓程序運行了幾回,一直到交互式界面出現。我經過右鍵「中文搜索引擎」-「智能搜索」把程序的字符串都提取出來。
其中有三個try again的字符串,我雙擊這些字符串在每一個地方都打了斷點,
特別是第三個地方
這裏同時出現了成功和失敗的字樣,其中failed!就是信息框的標題,try again是一個內容。能夠判斷兩段就是成功和失敗的信息框的位置。另個信息框上有一個jnz的跳轉頗有可能就是判斷跳轉處,
我點擊了這個jnz,看到了紅色箭頭,沒錯,這個跳轉決定了是成功仍是失敗。(若是nop掉這個跳轉就是爆破了。)
這個跳轉前有兩個mov的指令,我點擊以後下面的窗口中出現了字符
其中一個是我輸入的內容,另一個則是"Hello Dude!"那麼我就在想是否是序列號就是"Hello Dude!",下面的call就調用了一個方法進行比對呢?我又在call命令前放了一個斷點,而後運行了一遍程序,確認了確實是一個判斷的過程,由於call的命令中有cmp指令,一般和test指令同樣是用於數據比對的。
因而我在輸入處輸入了"Hello Dude!"以後,成功了破解了它。
接下來我會去試一下第一個按鈕,和traceme差很少。
內存裏顯示根據admin生成了四個數字7954,而後再將四個數字加入CW-XXXX-CRACKED中的XXXX部分,就是序列號。