duelist crackme 3 破解
(希望轉載的時候保持完整)
作者 丁丁蝦 ddxia/[CCG]
E_mail ddxia@263.net (如果Crackme教學文章中有錯,請來信:))
Web http://go18.163.com/~ddxia
目標 duelist crackme 3
目標URL http:\\go.163.com\~ddxia\crackme\DueList\Due-cm3.zip
工具 SoftIce4.01 for NT ExeScope
winapi.hlp
這個Crackme就做得比較COOL,不信,你執行起來看一看,有兩行18個CheckBox,
你要Crack it ,必須要選中其中的幾個CheckBox,你可以試一試說不定,好運氣,一試就對了!
呵呵~~~ 。在主介面中還有一句話說你一定要使用資源編輯器。(這句話也是讓我百思不得其解N
分鐘,隨著深入程式碼,然後就會慢慢的明白了,也非常有趣)
bpx messagebox
F11 回到程式程式碼中
在SoftIce中截下如下程式碼(來!我們"菸酒" "菸酒" "菸酒")
:u 401117 L9a
001B:00401117 33F6
XOR ESI,ESI
001B:00401119 33D2
XOR EDX,EDX
001B:0040111B 89355E214000 MOV
[0040215E],ESI
001B:00401121 893562214000 MOV
[00402162],ESI
001B:00401127 0FBE8EFE204000 MOVSX
ECX,BYTE PTR [ESI+004020FE]
^^^^^^^^^^^^^^^^---->4020FE中存放著CheckBox的ID號
001B:0040112E 83F94D
CMP ECX,4D
^^^^^^^^^^^^^^^^---->判斷是否到最後一個CheckBox
001B:00401131 742F
JZ 00401162
001B:00401133 890D5E214000 MOV
[0040215E],ECX
001B:00401139 51
PUSH ECX
001B:0040113A FF7508
PUSH DWORD PTR [EBP+08]
001B:0040113D E8D0010000 CALL
USER32!IsDlgButtonChecked
^^^^^^^^^^^^^^^^---->判斷CheckBox是否被選中
ECX中存放CheckBox的ID號
001B:00401142 46
INC ESI
001B:00401143 83F800
CMP EAX,00
001B:00401146 74DF
JZ 00401127
^^^^^^^^^^^^^^^^---->如果沒有被選中就跳到401127
檢查下一個CheckBox
001B:00401148 A15E214000 MOV
EAX,[0040215E]
^^^^^^^^^^^^^^^^---->把當前的ID號放入EAX
001B:0040114D 0FBE8EFE204000 MOVSX
ECX,BYTE PTR [ESI+004020FE]
^^^^^^^^^^^^^^^^---->把下一個的ID號放入EAX
001B:00401154 0FAFC1
IMUL EAX,ECX
001B:00401157 0FAFC6
IMUL EAX,ESI
001B:0040115A 010562214000 ADD
[00402162],EAX
^^^^^^^^^^^^^^^^^^^^^^^^---->>在00402162進行累加
001B:00401160 EBC5
JMP 00401127
001B:00401162 A162214000 MOV
EAX,[00402162]
001B:00401167 6BC04D
IMUL EAX,EAX,4D
^^^^^^^^^^^^^^^^^^^^^^^--->累加的值乘於4D放入EAX
001B:0040116A 3D6654F300 CMP
EAX,00F35466
001B:0040116F 7520
JNZ 00401191
^^^^^^^^^^^^^^^^^^^^^^^--->比較EAX的最後的值是否
為00F35466
001B:00401171 6800200000 PUSH
00002000
001B:00401176 6801204000 PUSH
00402001
001B:0040117B 6817204000 PUSH
00402017
001B:00401180 6A00
PUSH 00
001B:00401182 E855010000 CALL
USER32!MessageBoxA
001B:00401187 B801000000 MOV
EAX,00000001
001B:0040118C E969FFFFFF JMP
004010FA
001B:00401191 6800200000 PUSH
00002000
001B:00401196 6801204000 PUSH
00402001
001B:0040119B 6868204000 PUSH
00402068
001B:004011A0 6A00
PUSH 00
001B:004011A2 E835010000 CALL
USER32!MessageBoxA
001B:004011A7 B800000000 MOV
EAX,00000000
001B:004011AC E949FFFFFF JMP
004010FA
相信各位已經把上面的演算法弄清了吧!接下來我們來湊數00F35466!
1、我們先把4020FE的資料給弄到手。
:d 4020fe 40210e
0023:004020FE 16 49 5E 15 27 26 21 25-1D 59 53 37 31 48 5D 0C .I^.'&!%.YS71H].
0023:0040210E 61 52 4D 00 00 00 00 00-00 00 00 00 00 00 00 00 aRM.............
0023:0040211E 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0023:0040212E 03 40 00 00 AB 10 40 00-00 00 00 00 00 00 00 00 .@....@.........
0023:0040213E 00 00 40 00 8E 1A 73 00-08 00 01 00 00 00 00 00 ..@...s.........
0023:0040214E 00 00 00 00 00 00 00 00-00 00 00 00 00 00 40 00 ..............@.
0023:0040215E 5E 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ^...............
0023:0040216E 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
2、計算出正確的ID號。
缺一段程式!!不知道那位大蝦願意賜教 :)
你得到了ID號後,並沒有大功告成哦!!^_^這些ID號的排列,並不是按介面那樣
進行排列的!這時就會明白為什麼要用資源編輯器,檢視那些CheckBox的ID號,再進行正確
的選擇,這樣就可以說收工了!(其實在readme.txt中有提示:))
時間:2000.10.18
13:46