1. 程式人生 > >逆向破解之160個CrackMe —— 016

逆向破解之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