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

逆向破解之160個CrackMe —— 004-005

CrackMe —— 004

160 CrackMe 是比較適合新手學習逆向破解的CrackMe的一個集合一共160個待逆向破解的程式

CrackMe:它們都是一些公開給別人嘗試破解的小程式,製作 crackme 的人可能是程式設計師,想測試一下自己的軟體保護技術,也可能是一位 cracker,想挑戰一下其它 cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程式給自己破。

CrackMe簡稱CM。

來源

編號 作者 保護方式
004 ajj Name/Serial(Delphi)
005 ajj Serial(Delphi)

 

 

 

 

工具 

x32dbg

DelphiDecompiler

peid

LordPE

ImportREC

開始破解之旅

ON.1

使用x32dbg開啟004號程式,和程式一起的還有一個幫助檔案,從檔案中我們得知程式是Delphi

開啟程式,我們發現沒有一個確認按鈕,這下應該怎麼來操作呢?

先搜尋字串

地址=004580A9
反彙編=mov edx,ckme.458114
字串="恭喜恭喜!註冊成功"

 雙擊,在這個地址向上翻看

 

第二個跳轉跳過了註冊成功,該跳轉為註冊碼判斷跳轉將其NOP,輸入框被輸入資料????怎麼沒有任何反應

我們使用DelphiDecompiler 來開啟004號程式,該程式是一個Delphi反編譯程式,點選Procedures,在Events視窗下發現單擊,雙擊事件和一個chkcode,chkcode漢意疑似檢測code

回到程式,我們單擊bingo~,結果出現了,美麗的朱茵小姐出現了

接下來我們使用追碼的方式來嘗試破解

記錄兩個地址 00457E7C ,00457FB8和00457C40 在x32dbg 中設定斷點,來到程式在輸入框內輸入資料,單擊

停在了斷點處

單步向下開始走

到達00457C88處時出現dseloffc-012-OK 疑似註冊碼,繼續單步向下

00457C50 | 51                       | push ecx                                |
00457C51 | 874D FC                  | xchg dword ptr ss:[ebp-4],ecx           |
00457C54 | 53                       | push ebx                                | ebx:"紋E"
00457C55 | 56                       | push esi                                |
00457C56 | 8BD8                     | mov ebx,eax                             | ebx:"紋E", eax:&"10""
00457C58 | 33C0                     | xor eax,eax                             | eax:&"10"
00457C5A | 55                       | push ebp                                |
00457C5B | 68 3D7E4500              | push ckme.457E3D                        |
00457C60 | 64:FF30                  | push dword ptr fs:[eax]                 |
00457C63 | 64:8920                  | mov dword ptr fs:[eax],esp              |
00457C66 | 8BB3 F8020000            | mov esi,dword ptr ds:[ebx+2F8]          |
00457C6C | 83C6 05                  | add esi,5                               |
00457C6F | FFB3 10030000            | push dword ptr ds:[ebx+310]             | [ebx+310]:"黑頭Sun Bird"
00457C75 | 8D55 F8                  | lea edx,dword ptr ss:[ebp-8]            | [ebp-8]:"10"
00457C78 | 8BC6                     | mov eax,esi                             | eax:&"10"
00457C7A | E8 85FEFAFF              | call ckme.407B04                        |
00457C7F | FF75 F8                  | push dword ptr ss:[ebp-8]               | [ebp-8]:"10"
00457C82 | FFB3 14030000            | push dword ptr ds:[ebx+314]             | [ebx+314]:"dseloffc-012-OK"    疑似註冊碼
00457C88 | 8D55 F4                  | lea edx,dword ptr ss:[ebp-C]            |
00457C8B | 8B83 D4020000            | mov eax,dword ptr ds:[ebx+2D4]          | eax:&"10", [ebx+2D4]:"聰A"
00457C91 | E8 B2B6FCFF              | call ckme.423348                        |
00457C96 | FF75 F4                  | push dword ptr ss:[ebp-C]               |
00457C99 | 8D83 18030000            | lea eax,dword ptr ds:[ebx+318]          | eax:&"10", [ebx+318]:"黑頭Sun Bird10dseloffc-012-OK12345"
00457C9F | BA 04000000              | mov edx,4                               |
00457CA4 | E8 93BFFAFF              | call ckme.403C3C                        |
00457CA9 | 33D2                     | xor edx,edx                             |
00457CAB | 8B83 F4020000            | mov eax,dword ptr ds:[ebx+2F4]          | eax:&"10", [ebx+2F4]:&"HPB"
00457CB1 | E8 AAB5FCFF              | call ckme.423260                        |
00457CB6 | 8B93 18030000            | mov edx,dword ptr ds:[ebx+318]          | [ebx+318]:"黑頭Sun Bird10dseloffc-012-OK12345"
00457CBC | 8B83 F4020000            | mov eax,dword ptr ds:[ebx+2F4]          | eax:&"10", [ebx+2F4]:&"HPB"
00457CC2 | E8 B1B6FCFF              | call ckme.423378                        |
00457CC7 | 33F6                     | xor esi,esi                             |
00457CC9 | 8D55 EC                  | lea edx,dword ptr ss:[ebp-14]           |

繼續單步向下發現00457CBC處[ebx+318]堆疊處出現一串更長的字串,疑似註冊碼也在裡面,難道這個才是真正的註冊碼嗎,記錄下來

在註冊碼內輸入“黑頭Sun Bird10dseloffc-012-OK12345”雙擊視窗,圖片顯示成功

我們換個賬號765 發現註冊碼變了“黑頭Sun Bird8dseloffc-012-OK765” 中間10變為了8 ,最後12345變為了765,觀察發現最後應該是賬號

中間應該是計算所得

發現8在00457C7F壓入棧內

00457C7F | FF75 F8                  | push dword ptr ss:[ebp-8]               | [ebp-8]:L"8"

 向上翻看,發現00457C44和00457C4E為計算8的方式

00457C44 | B9 05000000              | mov ecx,5                               |
00457C49 | 6A 00                    | push 0                                  |
00457C4B | 6A 00                    | push 0                                  |
00457C4D | 49                       | dec ecx                                 |
00457C4E | 75 F9                    | jne ckme.457C49                         |

 固定變數5,5+使用者名稱長度

註冊碼計算方式為“黑頭Sun Bird”+使用者名稱長度+“dseloffc-012-OK”+使用者名稱

CrackMe —— 005

NO.1

用PEID查殼,發現存在UPX

 

我們脫殼,在程式入口處停下來,單步一次,發現暫存器視窗ESP變為紅色

在ESP處右鍵記憶體視窗轉到,在該位置下硬體斷點,F9執行

此時停在了我們的OEP

0044768C    55              push ebp
0044768D    8BEC            mov ebp,esp
0044768F    83C4 F4         add esp,-0xC
00447692    B8 2C754400     mov eax,CKme002.0044752C                 ; UNICODE "+"
00447697    E8 20EAFBFF     call CKme002.004060BC
0044769C    A1 D88C4400     mov eax,dword ptr ds:[0x448CD8]
004476A1    8B00            mov eax,dword ptr ds:[eax]
004476A3    E8 64A4FFFF     call CKme002.00441B0C

 開啟LordPE

找到我們的程序,右鍵修復映象大小,再次右鍵完整轉存

接下來使用ImportRec修復IAT

輸入OEP地址4768C 查詢IAT,獲取輸入表,點選無效函式,在無效函式處刪除指標->轉儲到檔案

提示:此處不要選擇剪下指標,否則會程式會異常

脫殼成功

ON.2

搜尋字串發現“註冊了”字串,進入地址向上翻看發現多個跳轉 

發現跳轉全部跳過註冊成功,將其全部NOP

執行,發現介面發生變化,破解成功

通過檢視字串發現一個疑似檔案地址,跳轉到彙編處發現會讀取X盤內ok.txt檔案

地址=00446D49
反彙編=mov edx,dumped_.446DEC
字串="X:\\ajj.126.c0m\\j\\o\\j\\o\\ok.txt"

 在X盤內,博主只有一個C盤,感覺到了無窮的麻煩....這部分交給正在觀看本文章的你啦(^_^)

&n