Lockup2000 v4.0破解實戰 (7千字)

看雪資料發表於2001-11-06

Lockup2000 v4.0破解手記
軟體說明:這是一個可以win98下鎖住螢幕不讓別人亂用你機器的小東東
難度:沒見過這麼萊的!
工具:trw2000 v1.03  FileInfo v2.45

  前兩天MM跟我說,想要一個鎖屏的工具,於是我就一口答應了(我靠,你是不是男人呀?別別,各位大俠有話好好說,別拿酒瓶子!)。回到家我左翻右找,終於在一張去年買的光碟裡找到了這個東東。雖然老了一點,不過還好,連我都沒聽說過這個東西,更別說MM了(我靠,我就看不貫你這樣的!別別,你怎麼又回來啦!?等我寫完再扁我也不遲呀!哎~好險)。不過,我得看看這個東西好不好用。嗯,不錯!怎麼回事?!不註冊只能用30天,我倒……這下可沒救了,MM英文比我好一千倍(英語六級!),誰說她看不懂我和誰玩命!於是我又找,結果不用說大家也知道了。沒辦法,只好扔下手頭的工作和它周旋到底啦………
  好,開工!先看看它是用什麼編的(千萬別是vb,想起破發啦彩票王專業版的那段時間我就想哭),用FI檢查一下,哈哈,天助我也,是用Delphi編的,而且沒加殼。
  下面當然是開始破解啦,像我這種懶人當然是先請出W32dasm大哥,載入之後用串式參考找到那個提示註冊號錯誤的句子:"Please enter a valid keycode",雙擊之後會看到如下程式碼:

* Referenced by a (U)nconditional or (C)onditional jump at address:
|:0045FF34(C)
|

* Possible StringData Ref from Code Obj->"Please enter a valid keycode"

:0046017F B804034600          mov eax, 00460304  游標停在這行
:00460184 E8D7BBFEFF          call 0044BD60
:00460189 EB16                jmp  004601A1
                     
        由於與本文無關以下省略,往下看就知道為什麼了。

好,接著向上找,看看有沒有je jne jz……之類的指令,哈哈找到一處:

:0046010C E8477CFEFF          call 00447D58
:00460111 84C0                test al, al
:00460113 7421                je 00460136 就是這個啦

偏移地址應該是:5F513,請出hiew老兄我改(當然是把機器碼改成9090啦)。哈哈……執行一下看看,沒反映?!於是,我再找,接著我又改,直到改當機都沒反映!我真想哭,嗚………
好吧,那就用我最拿手的動態除錯(鮮花,掌聲,還有音樂……)。
先用trw載入該死的Lockup2000,再點About註冊,姓名:crackYY 公司:NO 序列號:123654789。準備工作作好後,Ctrl+N撥出trw2000,下斷點:bpx hmemcpy,然後按F5返回Lockup。點選OK按鈕,trw彈出。接著下命令:bc * 清除斷點,再下命令:pmodule 直接跳到Lockup的鄰空,按7下F12(按第8下會跳出trw)會看到如下程式碼:

0167:00428CF9 5B                POP    EBX
0167:00428CFA C3                RET   
0167:00428CFB 90                NOP   
0167:00428CFC 55                PUSH    EBP
0167:00428CFD 8BEC              MOV    EBP,ESP
0167:00428CFF 6A00              PUSH    00000000
0167:00428D01 53                PUSH    EBX
0167:00428D02 56                PUSH    ESI
0167:00428D03 8BF2              MOV    ESI,EDX
0167:00428D05 8BD8              MOV    EBX,EAX
0167:00428D07 33C0              XOR    EAX,EAX
0167:00428D09 55                PUSH    EBP
0167:00428D0A 68518D4200        PUSH    00428D51
0167:00428D0F 64FF30            PUSH    DWord Ptr FS:[EAX]
0167:00428D12 648920            MOV    FS:[EAX],ESP

然後按F10一步一步分析,儘量去分析每一句的含義。一直找到出錯的程式碼:

0167:0046012E 8B45F8            MOV    EAX,[EBP-08]
0167:00460131 E8BE7DFEFF        CALL    00447EF4
0167:00460136 33C0              XOR    EAX,EAX
0167:00460138 5A                POP    EDX
0167:00460139 59                POP    ECX
0167:0046013A 59                POP    ECX
0167:0046013B 648910            MOV    FS:[EAX],EDX
0167:0046013E 685B014600        PUSH    0046015B
0167:00460143 8B45F8            MOV    EAX,[EBP-08]
0167:00460146 E8797BFEFF        CALL    00447CC4
0167:0046014B 8B45F8            MOV    EAX,[EBP-08]
0167:0046014E E87D2CFAFF        CALL    00402DD0
0167:00460153 C3                RET   
0167:00460154 E99733FAFF        JMP    004034F0
0167:00460159 EBE8              JMP    00460143
0167:0046015B B894024600        MOV    EAX,00460294
0167:00460160 E8FBBBFEFF        CALL    0044BD60
0167:00460165 A168874600        MOV    EAX,[00468768]
0167:0046016A 8B00              MOV    EAX,[EAX]
0167:0046016C E8FB67FEFF        CALL    0044696C
0167:00460171 EB2E              JMP    004601A1
0167:00460173 B804034600        MOV    EAX,00460304
0167:00460178 E8E3BBFEFF        CALL    0044BD60    ;走過這裡就會彈出對話方塊
0167:0046017D EB22              JMP    004601A1
0167:0046017F B804034600        MOV    EAX,00460304
0167:00460184 E8D7BBFEFF        CALL    0044BD60
0167:00460189 EB16              JMP    004601A1
0167:0046018B B82C034600        MOV    EAX,0046032C
0167:00460190 E8CBBBFEFF        CALL    0044BD60
0167:00460195 EB0A              JMP    004601A1
0167:00460197 B898034600        MOV    EAX,00460398

  別灰心,想要作cracke,你就必須要有一顆恆心,和一份打不垮的毅力。於是再重複上述步驟,小心的分析每一句指令,直到找到比對註冊碼的子程式。按F10,一直到看到如下程式碼為止:

0167:0045FF34 0F8645020000      JNA    0046017F
0167:0045FF3A 8D55E8            LEA    EDX,[EBP-18]
0167:0045FF3D 8B45FC            MOV    EAX,[EBP-04]
0167:0045FF40 8B80E8020000      MOV    EAX,[EAX+000002E8]
0167:0045FF46 E8818DFCFF        CALL    00428CCC
0167:0045FF4B 8B45E8            MOV    EAX,[EBP-18]
0167:0045FF4E BAD0014600        MOV    EDX,004601D0
0167:0045FF53 E8903EFAFF        CALL    00403DE8  ;註冊碼在這裡進行比較,按F8跟進。
0167:0045FF58 0F8515020000      JNZ    00460173
0167:0045FF5E B201              MOV    DL,01
0167:0045FF60 A1547B4400        MOV    EAX,[00447B54]
0167:0045FF65 E8EA7CFEFF        CALL    00447C54
0167:0045FF6A 8945F8            MOV    [EBP-08],EAX
0167:0045FF6D 33C0              XOR    EAX,EAX
0167:0045FF6F 55                PUSH    EBP

  到這裡可以說工做已經完成一半了,下面剩下的就是要找出真正的註冊碼到底在什麼地方,然後再進一步分析它是如何計算出註冊碼的,以便做出序號產生器。
  好,下面我們按F8進入這個子程式,看到以下程式碼:

0167:00403DE5 8D4000            LEA    EAX,[EAX+00]
0167:00403DE8 53                PUSH    EBX    ;在這裡下 d edx可以看到真註冊碼,要是下d eax可以看到剛才我輸入的註冊碼
0167:00403DE9 56                PUSH    ESI    ;這裡也能看到真註冊碼。
0167:00403DEA 57                PUSH    EDI    ;還有這裡
0167:00403DEB 89C6              MOV    ESI,EAX  ;這裡也行
0167:00403DED 89D7              MOV    EDI,EDX  ;這裡也是
0167:00403DEF 39D0              CMP    EAX,EDX  ;這裡
0167:00403DF1 0F848F000000      JZ      00403E86
0167:00403DF7 85F6              TEST    ESI,ESI
0167:00403DF9 7468              JZ      00403E63
0167:00403DFB 85FF              TEST    EDI,EDI
0167:00403DFD 746B              JZ      00403E6A
0167:00403DFF 8B46FC            MOV    EAX,[ESI-04]
0167:00403E02 8B57FC            MOV    EDX,[EDI-04]
0167:00403E05 29D0              SUB    EAX,EDX
0167:00403E07 7702              JA      00403E0B
0167:00403E09 01C2              ADD    EDX,EAX
0167:00403E0B 52                PUSH    EDX
0167:00403E0C C1EA02            SHR    EDX,02

  我又分析了一會兒,發現它是直接用正確註冊碼和輸入的註冊碼做比較的。真是有點兒怪怪的,於是我又請出W23Dasm兄,用串式參考找出錯的句子,不對,等等!"LUP2K-64589-45789-55685-34671"這個怎麼這麼眼熟(剛才在哪裡見過)?!我靠!是註冊碼,原來這個東東只有一個註冊碼!哎~都怪我一時大意,要是早發現就不用多費時間去動態除錯了,也不用寫這麼多東東了(嗚…抱頭痛哭一個小時,突然想起還沒寫沒,於是又接著寫了起來。)。
        這個軟體的保護很簡單,但它同時又是一個很好的例子。如果你掌握了這幾個步驟,那麼也就是說你已經入門了(就先說到這啦,再不跑就來不及啦!啊……好痛,嗚…出血啦!)。
         
             


                                                                                作者:crackYY
                                                                                oicq: 20651482
                                                                              E-mail: crackYY@hotmail.com

相關文章