由於昨晚朋友過生日,今天睡過頭了!:) 才遲遲貼出《duelist crackme 3 破解》 (4千字)

看雪資料發表於2000-10-19

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

相關文章