逆向破解之160個CrackMe —— 016

  • 2019 年 10 月 3 日
  • 筆記

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 ~ 破解成功