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