1.概述
作者:Acid burn
難度:★
保護方式:Nag,Name/Serial,Serial
運行Acid burn.exe,啓動界面如下:
![hello you have to kill me! Welcorne to this Newbies Crackrne nude by ACiD BuRN Crac:KerWoRlD1
要將上面的對話框去掉
點擊按鈕Serial/Name,進去要求輸入用戶名和序列號:
點擊按鈕Serial,進去要求輸入序列號:
2.Serial/Name
它有兩個按鈕,一個是Check it Baby,另一個是I give Up。隨便輸入個用戶名和序列號,顯示如下圖:
如果輸入錯誤,會彈對話框,字符串“Sorry,Theserial is incorect”可以作爲一個線索,
使用OD加載程序,運行程序,使用OD中的字符串插件找到字符串,雙擊跳轉過去,找到函數開始的地址,打斷點。
重新在OD中運行程序,在name欄輸入“tutucoo”,在serial欄輸入123456789,點擊確定,程序斷在了0x42f9a9處,下面有很多個CALL,估計算法包括在中間,先不急着分析每個函數,先猜一下函數的作用是什麼。
通過分析,序列號是根據用戶名計算得來的,而用戶名規定必須大於4個字節,本例輸入tutucoo,算法得出的正確序列號是"CW-9512-CRACKED",CW和CRACKED是固定的,中間的數字是通過計算得來的,具體算法如下(以tutucoo爲例):
1.0x74*0x8-0x74=0x32c,0x74是用戶名第1個字符t的ASCII碼
2.0x75*0x10+0x32c=0xa7c,0x75是第2個字符u的ASCII碼
3.0x75*0xb=0x507,0x75是第4個字符u的ASCII碼
4.0x74*0xe=0x658,0x658+0x507=0xb5f=2911,0x74是第3個字符t的ASCII碼
5.0x290x740x2 = 0x2528 = 9512,0x74是首字符的ASCII碼,0x29和0x2都是固定的
前面4步貌似沒有什麼實際用處,通過第5條公式可以直接計算出結果。
3.Serial
輸入12345678後點Check it Baby,出現錯誤:
用OD加載,找到字符串"Try Again"跳轉到代碼處,往上找到函數的開始處打斷點,運行程序後,重新輸入12345678後點Check it Baby,程序斷下。
下面是核心算法
看到這裏直接試一下字符串"Hello Dude!"是否是正確的序列號
果然沒錯
4.去掉彈窗
程序剛啓動時有個彈窗,既然要去彈窗就要找到調用MessageBoxA處,然後patch掉就可以了。
用OD加載程序,命令窗口執行bp MessageBoxA,運行程序,程序順利斷下。
這時斷在了系統領空,點k按鈕打開調用堆棧窗口:
跳轉到它的調用函數處,選中代碼右鍵->二進制->用Nop填充
然後右鍵->複製到可執行文件->選擇,會出現下面的彈窗,選擇是
點右上角的關閉,保存到文件選擇是,系統會彈出另存爲對話框,保存到本地。
運行patch到本地的程序,彈窗已經不見了。