• 标 题:Lockup2000 v4.0破解实战 (7千字)
  • 作 者:crackYY
  • 时 间:2001-11-6 1:02:29
  • 链 接:http://bbs.pediy.com

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