今天工作太忙了!好不容易才可以上來5分鐘---》duelist crackme 4 破解(上) (7千字)
duelist crackme
4 破解 (希望轉載的時候保持完整)
作者 丁丁蝦 ddxia/[CCG]
E_mail ddxia@263.net (如果Crackme教學文章中有錯,請來信:))
Web http://go18.163.com/~ddxia
目標 duelist crackme 4
目標URL http://go18.163.com/~ddxia/crackme/DueList/Due-cm4.zip
工具 SoftIce4.01 for NT winapi.hlp
據readme.txt說,用秘密表的形式來進行加密,解起來有些困難。同時要做一個KEYGEN
這次不用BPX MESSAGEBOXA 換一下口味!:)
因為這次Crackme是要輸入USER/CODE,一定要經過變化才進行比較,所以在Crackme得到
假的USER/CODE時,把它斷下來。
bpx getwindowtexta ------啊哦!!沒有用!
bpx getdlgitem ------與DLG操作有都斷下來。
結果按下check後,就給斷下來了,F11 然後再按F12 返回Crackme的程式碼空間
用SICE截下如下程式碼,COME ON BABY!!分析程式碼哦!!非常的有趣的活哦!:)
:u 401127 L13d
001B:00401127 6A00
PUSH 00
001B:00401129 6A00
PUSH 00
001B:0040112B 6A0E
PUSH 0E
001B:0040112D 6A03
PUSH 03
001B:0040112F FF7508 PUSH
DWORD PTR [EBP+08]
001B:00401132 E841020000 CALL
USER32!SendDlgItemMessageA
SendDlgItemMessage這個API呼叫了四次,來我們看一看它到底有什麼用?
LONG SendDlgItemMessage(
HWND hDlg, // 對話方塊的控制程式碼
int nIDDlgItem, // 控制元件的ID號
UINT Msg, // 傳送的訊息
WPARAM wParam, // 第一個訊息引數
LPARAM lParam // 第二個訊息引數
);
從程式中我們可以知道當UINT Msg=E 時 是取輸入字元的個數
當UINT
Msg=D 時 是取輸入字元的內容
001B:00401137 A3AF214000 MOV
[004021AF],EAX
^^^^^^^^^^^^^^^^^^^^^^^^---->取輸入USER的個數
001B:0040113C 83F800 CMP
EAX,00
001B:0040113F 0F84D5000000 JZ
0040121A
001B:00401145 83F808 CMP
EAX,08
001B:00401148 0F8FCC000000 JG
0040121A
^^^^^^^^^^^^^^^^^^^^^^^----->檢查輸入個數是否
大於0小於8
001B:0040114E 8BF0
MOV ESI,EAX
^^^^^^^^^^^^^^^^^^^^^^^----->注意這個
001B:00401150 6A00
PUSH 00
001B:00401152 6A00
PUSH 00
001B:00401154 6A0E
PUSH 0E
001B:00401156 6A04
PUSH 04
001B:00401158 FF7508 PUSH
DWORD PTR [EBP+08]
001B:0040115B E818020000 CALL
USER32!SendDlgItemMessageA
001B:00401160 83F800 CMP
EAX,00
001B:00401163 0F84B1000000 JZ
0040121A
001B:00401169 3BF0
CMP ESI,EAX
001B:0040116B 0F85A9000000 JNZ
0040121A
^^^^^^^^^^^^^^^^^^^^^^^------>比較user/code
輸入的個數是否相等
相等就繼續
001B:00401171 6860214000 PUSH
00402160
001B:00401176 6A08
PUSH 08
001B:00401178 6A0D
PUSH 0D
001B:0040117A 6A03
PUSH 03
001B:0040117C FF7508 PUSH
DWORD PTR [EBP+08]
001B:0040117F E8F4010000 CALL
USER32!SendDlgItemMessageA
^^^^^^^^^^^^^^^^^^^^^^^^----->取的USER 放入402160
001B:00401184 6879214000 PUSH
00402179
001B:00401189 6A10
PUSH 10
001B:0040118B 6A0D
PUSH 0D
001B:0040118D 6A04
PUSH 04
001B:0040118F FF7508 PUSH
DWORD PTR [EBP+08]
001B:00401192 E8E1010000 CALL
USER32!SendDlgItemMessageA
^^^^^^^^^^^^^^^^^^^^^^^^----->取的CODE 放入402160
001B:00401197 B9FFFFFFFF MOV
ECX,FFFFFFFF
001B:0040119C 41
INC ECX
001B:0040119D 0FBE8160214000 MOVSX EAX,BYTE
PTR [ECX+00402160]
001B:004011A4 83F800 CMP
EAX,00
001B:004011A7 7432
JZ 004011DB
001B:004011A9 BEFFFFFFFF MOV
ESI,FFFFFFFF
001B:004011AE 83F841 CMP
EAX,41
^^^^^^^^^^^^^^^^^^^^^^^^----->41=‘A’
001B:004011B1 7C67
JL 0040121A
001B:004011B3 83F87A CMP
EAX,7A
^^^^^^^^^^^^^^^^^^^^^^^^----->7A=‘z’
001B:004011B6 7762
JA 0040121A
001B:004011B8 83F85A CMP
EAX,5A
^^^^^^^^^^^^^^^^^^^^^^^^----->41=‘Z’
001B:004011BB 7C03
JL 004011C0
^^^^^^^^^^^^^^^^^^^^^^^^----->這幾句程式碼是判斷
USER是否輸入了字元
001B:004011BD 83E820 SUB
EAX,20
^^^^^^^^^^^^^^^^^^^^^^^^----->全部轉化為大寫
001B:004011C0 46
INC ESI
001B:004011C1 0FBE9617204000 MOVSX EDX,BYTE
PTR [ESI+00402017]
^^^^^^^^^^^^^^^^^^^^^^^^----->在402017表相對應的
位置
001B:004011C8 3BC2
CMP EAX,EDX
001B:004011CA 75F4
JNZ 004011C0
^^^^^^^^^^^^^^^^^^^^^^^^----->表中找到後在去另一
40203C表去尋找對應
的值。
001B:004011CC 0FBE863C204000 MOVSX EAX,BYTE
PTR [ESI+0040203C]
001B:004011D3 898194214000 MOV
[ECX+00402194],EAX
001B:004011D9 EBC1
JMP 0040119C
:d 402017
0023:00402017 41 31 4C 53 4B 32 44 4A-46 34 48 47 50 33 51 57 A1LSK2DJF4HGP3QW
0023:00402027 4F 35 45 49 52 36 55 54-59 5A 38 4D 58 4E 37 43 O5EIR6UTYZ8MXN7C
0023:00402037 42 56 39 00
BV9.
:d 40203c
0023:0040203C 53 55 37 43 53 4A 4B 46-30 39 4E 43 53 44 4F 39 SU7CSJKF09NCSDO9
0023:0040204C 53 44 46 30 39 53 44 52-4C 56 4B 37 38 30 39 53 SDF09SDRLVK7809S
0023:0040205C 34 4E 46 00
4NF.
001B:004011DB FF35AF214000 PUSH
DWORD PTR [004021AF]
001B:004011E1 6894214000 PUSH
00402194
001B:004011E6 6879214000 PUSH
00402179
001B:004011EB E854000000 CALL
00401244
^^^^^^^^^^^^^^^^^^^^^^----->比較子程式
轉換後的值與CODE相比較
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
比較程式程式碼:(雖然簡單,但是有漏洞哦!:) 呵呵~~~ )
當USER為一個字母的時候,CODE可以為任意字元 :)
可以試一下 user:a /code:= 是可以的!!
想一想,關鍵就在這個JCXZ 00401260的判斷
不知道是作者故意的,還是BUG,自己去想吧 呵呵~~~~~~
:u 401244 L20
001B:00401244 C8000000 ENTER
0000,00
001B:00401248 B801000000 MOV
EAX,00000001
001B:0040124D 8B7D08 MOV
EDI,[EBP+08]
001B:00401250 8B750C MOV
ESI,[EBP+0C]
001B:00401253 8B4D10 MOV
ECX,[EBP+10]
001B:00401256 F3A6
REPZ CMPSB
001B:00401258 67E305 JCXZ
00401260
001B:0040125B B800000000 MOV
EAX,00000000
001B:00401260 C9
LEAVE
001B:00401261 C20C00 RET
000C
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
001B:004011F0 83F801 CMP
EAX,01
001B:004011F3 0F84DEFEFFFF JZ
004010D7
001B:004011F9 EB1F
JMP 0040121A
001B:004011FB 837D1001 CMP
DWORD PTR [EBP+10],01
001B:004011FF 0F8422FFFFFF JZ
00401127
001B:00401205 837D1002 CMP
DWORD PTR [EBP+10],02
001B:00401209 752F
JNZ 0040123A
001B:0040120B E8B4000000 CALL
KERNEL32!ExitProcess
001B:00401210 B801000000 MOV
EAX,00000001
001B:00401215 E9FFFEFFFF JMP
00401119
001B:0040121A 6800200000 PUSH
00002000
001B:0040121F 6801204000 PUSH
00402001
001B:00401224 68AE204000 PUSH
004020AE
001B:00401229 6A00
PUSH 00
001B:0040122B E836010000 CALL
USER32!MessageBoxA
001B:00401230 B800000000 MOV
EAX,00000000
001B:00401235 E9DFFEFFFF JMP
00401119
001B:0040123A B800000000 MOV
EAX,00000000
001B:0040123F E9D5FEFFFF JMP
00401119
時間:2000.10.19 20:99
相關文章
- duelist crackme 2 破解(上) (6千字)2000-10-17
- 由於昨晚朋友過生日,今天睡過頭了!:)
才遲遲貼出《duelist crackme 3 破解》 (4千字)2000-10-19
- duelist crackme 1 破解 (5千字)2000-10-16
- Fpc大哥crackme的破解。 (4千字)2001-09-22
- crackme破解教程(續) (高手莫入) (2千字)2001-03-17
- 第二個CrackMe的破解 (6千字)2001-08-17
- Nullz CrackMe 1.1破解過程 (13千字)2001-09-18Null
- 一個CrackMe的破解以及序號產生器的製作
(4千字)2001-08-16
- 'net PAL 1.2C註冊碼破解,可是我用它撥了15分鐘還沒上來,用WIN98自帶的很快就上來了.
(4千字)2000-07-26
- SmartCheck 6.03的InstallShield序列號破解(上)――好久沒研究了。 (7千字)2001-08-20
- 破解FAQGenie (4千字)2001-04-10
- 破解ClockWise 3.03 (7千字)2001-06-06
- 破解Don't Panic! 4.0(我又來了) (5千字)2001-06-22
- Authorware 5.0破解 (4千字)2001-09-10
- 破解練習-CRACKME0012023-02-11
- 一篇關於密碼學的入門級破解例項-BiSHoP's
CrackMe4 (30千字)2002-11-09密碼學
- Recover4All v1.03的破解探討 (7千字)2000-09-30
- 真相大白!我的真正的入門破解4 (7千字)2000-08-30
- The JPEG Wizard 1.40破解 (4千字)2001-02-01
- CUTEVIDEO 1.0破解 (4千字)2002-02-28IDE
- [原創]破解-分析Crackme演算法2009-06-13演算法
- 一個CrackMe的破解 *KeyFIle保護* (教你如何獲得
KeyFile) (5千字)2001-02-06
- 快速破解CCProxy 4.30(7千字)2002-01-26
- 來一篇:暴力破解Crystal Button 1.31A (7千字)2015-11-15
- 又來敲CCG的大門了,Sorbet V1.1演算法破解。電神魔鬼兄來看啊!
(7千字)2000-10-01ORB演算法
- 我的破解心得(9) (4千字)2001-03-13
- 很久沒來這了,上一篇美萍反黃專家2.0註冊碼破解 (8千字)2001-07-19
- 初學者(7) (4千字)2000-05-05
- 暴力破解Security setup II (7千字)2001-10-24
- 用Ollydbg破解SWFBrowser 2.93 (7千字)2002-01-11
- 一篇破解入門 (7千字)2000-09-04
- 冷雨飄心的第二個crackme的破解方法,大家看看對不對! (5千字)2001-10-18
- 不脫殼破解極光多能鬧鐘
(16千字)2003-04-14
- WinRAR 2.71的初級破解 (4千字)2001-02-16
- 爆笑破解之-----ACDSEE 3.0 (4千字)2001-03-18
- Turbo Note+ 破解手記 (4千字)2001-05-13
- Gifline破解實錄 (4千字)2001-08-05
- 菜鳥破解錄之 The Cleaner (4千字)2000-08-12