Gifline破解实录
从华军软件园里拽下来一个将文本转成GIF的软件,写一下如何破解它的。
工具:TRW2000 1.22 W32DASM 8.93 REGMON95
适用对象:入门级
破解者:D-X-C E-MAIL:ZHIDA8721@SINA.COM
下载地址:http://www.newhua.com.cn/down/gifline.zip
开始干活了,先用W32DASM调入GIFLINE,查找字符串“is incorrect”,如下:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045C51D(C)
|
:0045C558 0FAF7DF0 imul
edi, dword ptr [ebp-10]
:0045C55C 8D55E4
lea edx, dword ptr [ebp-1C]
:0045C55F 8BC7
mov eax, edi
:0045C561 E852A7FAFF call 00406CB8
:0045C566 8B4DE4
mov ecx, dword ptr [ebp-1C]
:0045C569 8D45E8
lea eax, dword ptr [ebp-18]
* Possible StringData Ref from Code Obj ->"dpd-" *后来发现这原来是注册码的前4位固定值
|
:0045C56C BACCC64500 mov edx,
0045C6CC
:0045C571 E8EA75FAFF call 00403B60
:0045C576 8B55E8
mov edx, dword ptr [ebp-18]
:0045C579 8B45F8
mov eax, dword ptr [ebp-08]
:0045C57C E8A376FAFF call 00403C24
*要害CALL,判断注册码
:0045C581 0F8580000000 jne 0045C607
*关键跳转,改成je就OK了
。。。。。。
。。。。。。
*省略的这部分后来总结出是注册成功后向注册表里建两个键值
。。。。。。
* Possible StringData Ref from Code Obj ->"Sorry, This Registration Code "
/跳到这就没戏了
->"is incorrect. Please try again " /往前看,看哪可以跳过此处
->"by copying the code from your "
->"License documentation. If problems "
->"persist please contact us via: "
->"dinther@geocities.com"
|
:0045C607 B8FCC64500 mov eax,
0045C6FC
:0045C60C E847B1FDFF call 00437758
还是不过瘾,再破破注册码。用TRW2000载入,点REGISTER后,要求填入E-MAIL和REGISTRATION CODE,填:enjoy@haha
(只要有个“@”就可以) 和 1234567890 (真正注册码的长度由你的E-MAIL算出,长度不固定)
下命令 bpx 0167:0045c57c (我的机器是这句,不知道你的,要不是,就自己追追)就是那句 call 00403c24
找到后按F8 追入
:00403C24 53
push ebx
:00403C25 56
push esi
:00403C26 57
push edi
:00403C27 89C6
mov esi, eax
:00403C29 89D7
mov edi, edx
:00403C2B 39D0
cmp eax, edx
:00403C2D 0F848F000000 je 00403CC2
:00403C33 85F6
test esi, esi
:00403C35 7468
je 00403C9F
:00403C37 85FF
test edi, edi
:00403C39 746B
je 00403CA6
:00403C3B 8B46FC mov eax, dword
ptr [esi-04] *送入假注册码的长度 看到EAX=0000000A
:00403C3E 8B57FC mov edx, dword
ptr [edi-04] *送入真注册码的长度 看到EDX=0000000B
:00403C41 29D0
sub eax, edx 你可以回过头来将假注册码改成11位,那个问,你咋知道是送注册码的长度?试的呗
。。。。。。
。。。。。。
。。。。。。
以下这一段就是判断注册码的,咋知道?这可是关键地方啦,因为执行完00403C4D这句,看到ECX=34333231,什么意思?就是1234的ASCII码的倒序!你怎么想到的?因为我先前用88888888当注册码,发现ECX=38383838,太显眼了!为什么又要用1234567890当注册码?不这样咋发现它是倒序存放的。
:00403C4D 8B0E
mov ecx, dword ptr [esi] *假注册码的前4位,ECX=34333231
:00403C4F 8B1F
mov ebx, dword ptr [edi] *真注册码的前4位,EBX=2D647064
即dpd- 的ASCII码的倒序
:00403C51 39D9
cmp ecx, ebx *第一次比较
:00403C53 7558
jnz 00403CAD *不能让它跳转,下指令 r fl z=1 改变零标志
:00403C55 4A dec
edx
:00403C56 7415
je 00403C6D *判断是否检查完毕
:00403C58 8B4E04 mov ecx, dword
ptr [esi+04] *假注册码接下来的4位,ECX=38373635
:00403C5B 8B5F04 mov ebx, dword
ptr [edi+04] *真注册码接下来的4位,EBX=31343036
:00403C5E 39D9 cmp ecx,
ebx *第二次比较
:00403C60 754B jnz 00403CAD
*不能让它跳转,下指令 r fl z=1 改变零标志
:00403C62 83C608
add esi, 00000008
:00403C65 83C708
add edi, 00000008
:00403C68 4A
dec edx
:00403C69 75E2
jne 00403C4D *由于真注册码的长度是11位,所以要跳回00403C4D那句再判断,我就不写了,应该能懂了吧。最后的注册码:dpd-6041164
:00403C6B EB06
jmp 00403C73
整理一下:E-MAIL:enjoy@haha CODE: dpd-6041164
该完了吧?还罗嗦什么?再说一句。前面不是说过注册成功后要往注册表里写东东吗?就是下面:
[HKEY_CURRENT_USER\Software\setenil]
"date"=hex:00,00,00,80,40,92,46,41
"name"= enjoy@haha
这个你用REGMON95可以监测到,其实就是date那句最重要,无论是什么样的注册码最终都得到这句。
好了,是不是说的很详细?给出了三种注册方式。初学者可以好好看看了。
- 标 题:Gifline破解实录 (4千字)
- 作 者:D-X-C
- 时 间:2001-8-5 8:42:38
- 链 接:http://bbs.pediy.com