老文章档案 · 2003 年

破解对象:光盘卫士 V1.5

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-08-14 · 作者:人气: · 出处:赢政天下整理收藏)

软件简介

———————————————————————————————

你有没有不想让别人在你电脑中使用光盘,或只希望运行某些光

盘,或禁止某些光盘在您的光驱中运行,光盘卫士完全满足您的需要,

而且它还支持多光驱.更重要的它是一款绿色软件,无需安装,拷贝即

可。

授权方式: 共享

下载地址:http://jshttp.skycn.net/down/cdsafe.exe

或 http://www.skycn.com/soft/4913.html

———————————————————————————————

破解者:青锋剑客

破解目的:获得注册码,做出注册机。

破解工具:fi2.5 unaspack 1.0.9.1 W32DASM10中文版 ollydbg1.07 tc2.0

破解过程:

1。用FI2.5检查程序的壳,是ASPack v2.001,用unaspack 1.0.9.1脱壳。

2.先熟悉一下程序,调出注册界面,用户名输入shifeng,注册号输入87654321,点注册,弹出注册码错误。

3.用W32DASM10打开脱壳后的文件,"参考"--"串式数据参考",查处"注册码不正确",双击,只有一处。

来到下面:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00472131(C)

|

:004721F5 A174974700 mov eax, dword ptr [00479774]

:004721FA 8B00 mov eax, dword ptr [eax]

:004721FC 8B80E4020000 mov eax, dword ptr [eax+000002E4]

* Possible StringData Ref from Code Obj ->"错误"

|

:00472202 BA00234700 mov edx, 00472300

:00472207 E8E075FBFF call 004297EC

:0047220C A174974700 mov eax, dword ptr [00479774]

:00472211 8B00 mov eax, dword ptr [eax]

:00472213 8B80D4020000 mov eax, dword ptr [eax+000002D4]

* Possible StringData Ref from Code Obj ->"注册码不正确"

|

:00472219 BA10234700 mov edx, 00472310

:0047221E E8C975FBFF call 004297EC

:00472223 A174974700 mov eax, dword ptr [00479774]

:00472228 8B00 mov eax, dword ptr [eax]

:0047222A 8B10 mov edx, dword ptr [eax]

:0047222C FF92D8000000 call dword ptr [edx+000000D8]

看到这里* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00472131(C)

跳到这里:

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00472075(C)

|

:004720EA 51 push ecx

:004720EB 53 push ebx

:004720EC 8BD8 mov ebx, eax

:004720EE 33C0 xor eax, eax

:004720F0 55 push ebp

:004720F1 686D224700 push 0047226D

:004720F6 64FF30 push dword ptr fs:[eax]

:004720F9 648920 mov dword ptr fs:[eax], esp

:004720FC 8D55FC lea edx, dword ptr [ebp-04]

:004720FF 8B83E4020000 mov eax, dword ptr [ebx+000002E4]

:00472105 E8B276FBFF call 004297BC

:0047210A 8B45FC mov eax, dword ptr [ebp-04] 假注册码

:0047210D 50 push eax

:0047210E 8D55F8 lea edx, dword ptr [ebp-08]

:00472111 8B83E8020000 mov eax, dword ptr [ebx+000002E8]

:00472117 E8A076FBFF call 004297BC

:0047211C 8B4DF8 mov ecx, dword ptr [ebp-08] 用户名

:0047211F BAF5250000 mov edx, 000025F5 注意此常数

:00472124 8B83F4020000 mov eax, dword ptr [ebx+000002F4]

:0047212A E8C173FFFF call 004694F0 很明显,关键调用

:0047212F 84C0 test al, al

:00472131 0F84BE000000 je 004721F5

* Possible StringData Ref from Code Obj ->"user"

|

:00472137 6884224700 push 00472284

:0047213C 8D55F0 lea edx, dword ptr [ebp-10]

:0047213F 8B83E8020000 mov eax, dword ptr [ebx+000002E8]

4.为方便调试,启动ollydbg,CTRL+G输入472131,往上走一点,在004720EA行,F2在此下断点。F9运行程序

进入注册界面,用户名输入shifeng,注册号输入87654321,点注册,中断。F8几次,进入关键调用:

004694F0 /$ 55 PUSH EBP

004694F1 |. 8BEC MOV EBP,ESP

004694F3 |. 83C4 F8 ADD ESP,-8

004694F6 |. 53 PUSH EBX

004694F7 |. 56 PUSH ESI

004694F8 |. 33DB XOR EBX,EBX

004694FA |. 895D F8 MOV DWORD PTR SS:[EBP-8],EBX

004694FD |. 894D FC MOV DWORD PTR SS:[EBP-4],ECX

00469500 |. 8BF2 MOV ESI,EDX 把上面的常数25F5送到ESI

00469502 |. 8BD8 MOV EBX,EAX

00469504 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00469507 |. E8 D8A9F9FF CALL CDSAFE.00403EE4

0046950C |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]

0046950F |. E8 D0A9F9FF CALL CDSAFE.00403EE4

00469514 |. 33C0 XOR EAX,EAX

00469516 |. 55 PUSH EBP

00469517 |. 68 77954600 PUSH CDSAFE.00469577

0046951C |. 64:FF30 PUSH DWORD PTR FS:[EAX]

0046951F |. 64:8920 MOV DWORD PTR FS:[EAX],ESP

00469522 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0

00469526 |. 75 04 JNZ SHORT CDSAFE.0046952C 用户名没写,不跳,则死

00469528 |. 33DB XOR EBX,EBX

0046952A |. EB 28 JMP SHORT CDSAFE.00469554

0046952C |> 85F6 TEST ESI,ESI

0046952E |. 75 04 JNZ SHORT CDSAFE.00469534

00469530 |. 33DB XOR EBX,EBX

00469532 |. EB 20 JMP SHORT CDSAFE.00469554

00469534 |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00469537 |. 50 PUSH EAX

00469538 |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]

0046953B |. 8BD6 MOV EDX,ESI

0046953D |. 8BC3 MOV EAX,EBX

0046953F |. E8 80FEFFFF CALL CDSAFE.004693C4 ;计算注册码,关键调用

00469544 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] 可看到正确注册码

00469547 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]

0046954A |. E8 F1A8F9FF CALL CDSAFE.00403E40

0046954F |. 0F94C0 SETE AL

00469552 |. 8BD8 MOV EBX,EAX

00469554 |> 33C0 XOR EAX,EAX

00469556 |. 5A POP EDX

00469557 |. 59 POP ECX

00469558 |. 59 POP ECX

00469559 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX

0046955C |. 68 7E954600 PUSH CDSAFE.0046957E

00469561 |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00469564 |. BA 02000000 MOV EDX,2

00469569 |. E8 66A5F9FF CALL CDSAFE.00403AD4

0046956E |. 8D45 08 LEA EAX,DWORD PTR SS:[EBP+8]

00469571 |. E8 3AA5F9FF CALL CDSAFE.00403AB0

00469576 \. C3 RETN

5.F7跟进上面所提的调用,来到下面:

004693C4 /$ 55 PUSH EBP

004693C5 |. 8BEC MOV EBP,ESP

004693C7 |. 6A 00 PUSH 0

004693C9 |. 6A 00 PUSH 0

004693CB |. 6A 00 PUSH 0

004693CD |. 6A 00 PUSH 0

004693CF |. 6A 00 PUSH 0

004693D1 |. 53 PUSH EBX

004693D2 |. 56 PUSH ESI

004693D3 |. 894D FC MOV DWORD PTR SS:[EBP-4],ECX

004693D6 |. 8BF2 MOV ESI,EDX

004693D8 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

004693DB |. E8 04ABF9FF CALL CDSAFE.00403EE4

004693E0 |. 33C0 XOR EAX,EAX

004693E2 |. 55 PUSH EBP

004693E3 |. 68 C2944600 PUSH CDSAFE.004694C2

004693E8 |. 64:FF30 PUSH DWORD PTR FS:[EAX]

004693EB |. 64:8920 MOV DWORD PTR FS:[EAX],ESP

004693EE |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

004693F1 |. BA DC944600 MOV EDX,CDSAFE.004694DC ;ASCII "Error"

004693F6 |. E8 4DA7F9FF CALL CDSAFE.00403B48

004693FB |. 85F6 TEST ESI,ESI

004693FD |. 0F84 99000000 JE CDSAFE.0046949C

00469403 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0

00469407 |. 0F84 8F000000 JE CDSAFE.0046949C

0046940D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00469410 |. E8 1BA9F9FF CALL CDSAFE.00403D30 得到用户名长度

00469415 |. 8BD8 MOV EBX,EAX 注册码第一部分开始计算

00469417 |. 0FAFDE IMUL EBX,ESI 用户名长度*25F5+用户名第一字符*29A

0046941A |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046941D |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX]

00469420 |. 69C0 9A020000 IMUL EAX,EAX,29A

00469426 |. 03D8 ADD EBX,EAX

00469428 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]

0046942B |. 8BC3 MOV EAX,EBX

0046942D |. E8 1AECF9FF CALL CDSAFE.0040804C 转10进制形式,得到注册码三部分的第一部分

00469432 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]

00469435 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00469438 |. B9 EC944600 MOV ECX,CDSAFE.004694EC

0046943D |. E8 3AA9F9FF CALL CDSAFE.00403D7C 生成-

00469442 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00469445 |. 0FB600 MOVZX EAX,BYTE PTR DS:[EAX] 注册码第二部分开始计算

00469448 |. F7EE IMUL ESI 用户名第一字符*25F5*7B

0046944A |. 6BD8 7B IMUL EBX,EAX,7B

0046944D |. FF75 F8 PUSH DWORD PTR SS:[EBP-8]

00469450 |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]

00469453 |. 8BC3 MOV EAX,EBX

00469455 |. E8 F2EBF9FF CALL CDSAFE.0040804C 转10进制形式,得到第二部分

0046945A |. FF75 F0 PUSH DWORD PTR SS:[EBP-10]

0046945D |. 68 EC944600 PUSH CDSAFE.004694EC

00469462 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00469465 |. BA 03000000 MOV EDX,3

0046946A |. E8 81A9F9FF CALL CDSAFE.00403DF0 与第一部分合成并形成-

0046946F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

00469472 |. E8 B9A8F9FF CALL CDSAFE.00403D30 用户名长度

00469477 |. 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]

0046947A |. 0FB612 MOVZX EDX,BYTE PTR DS:[EDX] 第三部分开始计算

0046947D |. F7EA IMUL EDX 用户名第一字符*用户名长度*19D5

0046947F |. 69D8 D5190000 IMUL EBX,EAX,19D5 再加上25F5

00469485 |. 03DE ADD EBX,ESI

00469487 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]

0046948A |. 8BC3 MOV EAX,EBX

0046948C |. E8 BBEBF9FF CALL CDSAFE.0040804C 转10进制形式,得到第三部分

00469491 |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]

00469494 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

00469497 |. E8 9CA8F9FF CALL CDSAFE.00403D38 与前部分合成到一起

0046949C |> 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]

0046949F |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]

004694A2 |. E8 5DA6F9FF CALL CDSAFE.00403B04

004694A7 |. 33C0 XOR EAX,EAX

004694A9 |. 5A POP EDX

004694AA |. 59 POP ECX

004694AB |. 59 POP ECX

004694AC |. 64:8910 MOV DWORD PTR FS:[EAX],EDX

004694AF |. 68 C9944600 PUSH CDSAFE.004694C9

004694B4 |> 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]

004694B7 |. BA 05000000 MOV EDX,5

004694BC |. E8 13A6F9FF CALL CDSAFE.00403AD4

004694C1 \. C3 RETN

6.相应TC注册机源码:

#include "string.h"

main()

{

unsigned long lens,x,sn1,sn2,sn3;

char str[60];

clrscr();

printf("\n\n\n**********************************************************\n");

printf(" 光盘卫士 V1.5 注册机\n");

printf(" 作者: 青锋剑客 ( 2002/11/6 )\n");

printf("**********************************************************\n\n");

printf("请输入你的姓名 : ");

gets(str);

lens=strlen(str);

if (str[0]>0) x=str[0];

else x=255-(0xffffffff-str[0]);

sn1=lens*0x25f5+x*0x29a;

sn2=x*0x25f5*0x7b;

sn3=x*lens*0x19d5+0x25f5;

printf("\n你的序列号为:");

printf("%ld-%ld-%ld\n",sn1,sn2,sn3);

}

(出处:赢政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史