逆向破解之160個CrackMe —— 016
CrackMe —— 016
160 CrackMe 是比較適合新手學習逆向破解的CrackMe的一個集合一共160個待逆向破解的程式
CrackMe:它們都是一些公開給別人嘗試破解的小程式,製作 crackme 的人可能是程式設計師,想測試一下自己的軟體保護技術,也可能是一位 cracker,想挑戰一下其它 cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程式給自己破。
CrackMe簡稱CM。 程式下載地址:點選我來源 <-點選檢視
編號 | 作者 | 保護方式 |
016 | bjanes | Serial(VB5) |
工具
x32dbg
VB Decompiler Pro
開始破解之旅
ON.1
爆破方式
使用x32dbg開啟016號程式
右鍵 搜尋->當前模組->字串
我們看見了錯誤提示字串地址00403A69和正確提示字串地址00403AE9
我們進入錯誤提示字串地址00403A69處向上檢視
004039FE | 83C4 18 | add esp,18 | 00403A01 | 66:85FF | test di,di | 00403A04 | 75 1C | jne bjcm20a.403A22 |跳轉處 跳轉到00403A22 00403A06 | 8B7D 08 | mov edi,dword ptr ss:[ebp+8] | 00403A09 | B8 01000000 | mov eax,1 | 00403A0E | 66:0345 E8 | add ax,word ptr ss:[ebp-18] | 00403A12 | 0F80 94010000 | jo bjcm20a.403BAC |大跳 00403A18 | 8945 E8 | mov dword ptr ss:[ebp-18],eax | 00403A1B | 33DB | xor ebx,ebx | 00403A1D | E9 5AFDFFFF | jmp bjcm20a.40377C | 00403A22 | 33DB | xor ebx,ebx | 00403A24 | 8B35 A4104000 | mov esi,dword ptr ds:[<&__vbaVarDup>] | 00403A2A | B9 04000280 | mov ecx,80020004 | 00403A2F | 894D 98 | mov dword ptr ss:[ebp-68],ecx | 00403A32 | B8 0A000000 | mov eax,A | A:'\n' 00403A37 | 894D A8 | mov dword ptr ss:[ebp-58],ecx | 00403A3A | BF 08000000 | mov edi,8 | 00403A3F | 8D95 50FFFFFF | lea edx,dword ptr ss:[ebp-B0] | edx:EntryPoint 00403A45 | 8D4D B0 | lea ecx,dword ptr ss:[ebp-50] | 00403A48 | 8945 90 | mov dword ptr ss:[ebp-70],eax | 00403A4B | 8945 A0 | mov dword ptr ss:[ebp-60],eax | 00403A4E | C785 58FFFFFF F0224000 | mov dword ptr ss:[ebp-A8],bjcm20a.4022F | 4022F0:L"Wrong serial!" 00403A58 | 89BD 50FFFFFF | mov dword ptr ss:[ebp-B0],edi | 00403A5E | FFD6 | call esi | 00403A60 | 8D95 60FFFFFF | lea edx,dword ptr ss:[ebp-A0] | edx:EntryPoint 00403A66 | 8D4D C0 | lea ecx,dword ptr ss:[ebp-40] | 00403A69 | C785 68FFFFFF C8224000 | mov dword ptr ss:[ebp-98],bjcm20a.4022C | 4022C8:L"Sorry, try again!"
我們看到了最近的跳轉處是00403A1D 該處是一個向上跳的JMP明顯不是我們要找的跳轉,在往上00403A12是一個向下的大跳也不是我們要找的跳轉,再往上00403A04是一個跳轉到00403A1D下發的地址可能是我們要找的跳轉,在此處下斷點
F9執行,在輸入框內輸入任意資料,點選Check it按鈕,沒有在跳轉處暫停,我們在下一條指令下設定斷點,再次點選按鈕,此時程式暫停到了我們的斷點處
由此可知,程式是通過別處跳轉到00403A24處
我在x32dbg內右鍵 搜尋->當前模組->常數 在輸入框內輸入00403A24點選確定
搜尋到一處引用的地址
點選進入該地址,在此處下斷點
再次點選Check it 按鈕
此時程式停在了我們剛剛設定的斷點處,我們單步向下
此時可以看出程式跳轉到了錯誤資訊提示處,我們將00403A04處的指令改為NOP,F9執行
bingo~ 此時破解成功
ON.2
註冊機方式
我們使用VB Decompiler Pro開啟016號程式
發現和我們的014號程式程式碼一樣
附上我們的註冊機程式碼
code = '' for i in range(1, 10): a = i ^ 2 code = code + str(a)[-1] print(code)
得出結果為301674501我們輸入到輸入框內,點選Check it按鈕
bingo ~ 破解成功
&n