Gifline破解实录 (4千字)
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那句最重要,无论是什么样的注册码最终都得到这句。
好了,是不是说的很详细?给出了三种注册方式。初学者可以好好看看了。
