逆向破解之160個CrackMe —— 017
阿新 • • 發佈:2019-08-25
CrackMe —— 017
160 CrackMe 是比較適合新手學習逆向破解的CrackMe的一個集合一共160個待逆向破解的程式
CrackMe:它們都是一些公開給別人嘗試破解的小程式,製作 crackme 的人可能是程式設計師,想測試一下自己的軟體保護技術,也可能是一位 cracker,想挑戰一下其它 cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程式給自己破。
CrackMe簡稱CM。 程式下載地址:點選我來源 <-點選檢視
編號 | 作者 | 保護方式 |
017 | bjanes | Serial(VB5) |
工具
x32dbg
VB Decompiler Pro
開始破解之旅
ON.1
爆破方式
首先使用x32dbg開啟017號程式,右鍵搜尋字串
找到了我們的整錯提示和錯誤提示的字串
進入錯誤提示字串,向上翻看
00404ED7 | 51 | push ecx | 00404ED8 | 52 | push edx | 00404ED9 | E9 A8000000 | jmp bjcm30a.404F86 | 00404EDE | BE 08000000 | mov esi,0x8 | 從該地址進入 00404EE3 | 8B1D CC104000 | mov ebx,dword ptr ds:[<&__vbaVarDup>] | 00404EE9 | B9 04000280 | mov ecx,0x80020004 | 00404EEE | 898D 20FFFFFF | mov dword ptr ss:[ebp-0xE0],ecx | 00404EF4 | B8 0A000000 | mov eax,0xA | A:'\n' 00404EF9 | 898D 30FFFFFF | mov dword ptr ss:[ebp-0xD0],ecx | 00404EFF | 8D95 F8FEFFFF | lea edx,dword ptr ss:[ebp-0x108] | 00404F05 | 8D8D 38FFFFFF | lea ecx,dword ptr ss:[ebp-0xC8] | 00404F0B | 8985 18FFFFFF | mov dword ptr ss:[ebp-0xE8],eax | 00404F11 | 8985 28FFFFFF | mov dword ptr ss:[ebp-0xD8],eax | 00404F17 | C785 00FFFFFF 102A4000 | mov dword ptr ss:[ebp-0x100],bjcm30a.402A10 | 402A10:L"Wrong serial!" 00404F21 | 89B5 F8FEFFFF | mov dword ptr ss:[ebp-0x108],esi | 00404F27 | FFD3 | call ebx | 00404F29 | 8D95 08FFFFFF | lea edx,dword ptr ss:[ebp-0xF8] | 00404F2F | 8D8D 48FFFFFF | lea ecx,dword ptr ss:[ebp-0xB8] | 00404F35 | C785 10FFFFFF D82B4000 | mov dword ptr ss:[ebp-0xF0],bjcm30a.402BD8 | 402BD8:L"Sorry, try again!" 00404F3F | 89B5 08FFFFFF | mov dword ptr ss:[ebp-0xF8],esi | 00404F45 | FFD3 | call ebx |
此時來到了進入錯誤提示字串的入口處,找到00404EDE地址,右鍵 搜尋->當前模組->常數,在此輸入00404EDE搜尋到了兩個引用該字串的地方,分別下斷點
在輸入框內輸入任意資料,點選Check it 按鈕,程式停在了0040459F處,我們按F9執行程式聽到了00404941處此時說明0040459F處斷點是驗證輸入資料格式的,00404941處斷點才是驗證資料,我們單步F8向下
此時我們看到程式跳過了正確提示符,說明是在此處判斷我們將00404E30處改為NOP,F9執行
bingo ~ 程式破解成功
ON.2
註冊機方式
我們使用VB Decompiler Pro開啟017號程式,發現相對於前兩個版本此處有了較大的變化
多出了hextode和hexfunc兩個函式,並不影響我們的分析,這兩個函式應該是轉16進位制的函式
我們點選進入Command1_Click,來到最下方看到了生成註冊碼的地方
發現和我們的前兩個程式程式碼一樣
附上我們的註冊機程式碼
code = '' for i in range(1, 10): a = i ^ 2 code = code + str(a)[-1] print(code)
得出結果為301674501我們輸入到輸入框內,點選Check it按鈕
bingo ~ 破解成功
&n