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 |www.jujinyule.com 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 www.yuchengyule.com| 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:[www.huichengtxgw.com 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 www.yishengyule158.com 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,www.yuechaoyule.com 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壓入棧內
1
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運行
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:[www.seocelve.com eax]
004476A3 E8 64A4FFFF call CKme002.00441B0C
打開LordPE
找到咱們的進程,右鍵修復鏡像大小,再次右鍵完整轉存
接下來使用ImportRec修復IAT
輸入OEP地址4768C 查找IAT,獲取輸入表,點擊無效函數,在無效函數處刪除指針->轉儲到文件
提示:此處不要選擇剪切指針,不然會程序會異常
脫殼成功
ON.2
搜索字符串發現「註冊了」字符串,進入地址向上翻看發現多個跳轉
發現跳轉所有跳過註冊成功,將其所有NOP
運行,發現界面發生變化,破解成功程序員