老文章档案 · 2003 年

光盘卫士 V1.8算法分析

破解教程 · 算法分析 · 2003-09-05 · 作者:北极熊[DFCG] 人气: · 出处:赢政天下整理收藏)

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

软件简介

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

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

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

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

可。

授权方式: 共享

下载地址: 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打开脱壳后的文件,"参考"--"串式数据参考",查处"注册码不正确",双击,只有一处。

来到下面:

:0046F0FB E80097FBFF call 00428800

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

:0046F103 BAF5250000 mov edx, 000025F5 注意此常数

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

:0046F10E E825ECFDFF call 0044DD38 很明显,关键call

:0046F113 84C0 test al, al

:0046F115 0F84BE000000 je 0046F1D9

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

|

:0046F11B 6868F24600 push 0046F268

:0046F120 8D55F0 lea edx, dword ptr [ebp-10]

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

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

:0044DD38 55 push ebp

:0044DD39 8BEC mov ebp, esp

:0044DD3B 83C4F8 add esp, FFFFFFF8

:0044DD3E 53 push ebx

:0044DD3F 56 push esi

:0044DD40 33DB xor ebx, ebx

:0044DD42 895DF8 mov dword ptr [ebp-08], ebx

:0044DD45 894DFC mov dword ptr [ebp-04], ecx

:0044DD48 8BF2 mov esi, edx 把上面的常数25F5送到ESI

:0044DD4A 8BD8 mov ebx, eax

:0044DD4C 8B45FC mov eax, dword ptr [ebp-04]

:0044DD4F E89061FBFF call 00403EE4

:0044DD54 8B4508 mov eax, dword ptr [ebp+08]

:0044DD57 E88861FBFF call 00403EE4

:0044DD5C 33C0 xor eax, eax

:0044DD5E 55 push ebp

:0044DD5F 68BFDD4400 push 0044DDBF

:0044DD64 64FF30 push dword ptr fs:[eax]

:0044DD67 648920 mov dword ptr fs:[eax], esp

:0044DD6A 837DFC00 cmp dword ptr [ebp-04], 00000000

:0044DD6E 7504 jne 0044DD74 用户名没写,不跳,则死

:0044DD70 33DB xor ebx, ebx

:0044DD72 EB28 jmp 0044DD9C

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

|:0044DD6E(C)

|

:0044DD74 85F6 test esi, esi

:0044DD76 7504 jne 0044DD7C

:0044DD78 33DB xor ebx, ebx

:0044DD7A EB20 jmp 0044DD9C

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

|:0044DD76(C)

|

:0044DD7C 8D45F8 lea eax, dword ptr [ebp-08]

:0044DD7F 50 push eax

:0044DD80 8B4DFC mov ecx, dword ptr [ebp-04]

:0044DD83 8BD6 mov edx, esi

:0044DD85 8BC3 mov eax, ebx

:0044DD87 E880FEFFFF call 0044DC0C 计算注册码,关键调用

:0044DD8C 8B55F8 mov edx, dword ptr [ebp-08] 可看到正确注册码

:0044DD8F 8B4508 mov eax, dword ptr [ebp+08]

:0044DD92 E8A960FBFF call 00403E40

:0044DD97 0F94C0 sete al

:0044DD9A 8BD8 mov ebx, eax

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

|:0044DD72(U), :0044DD7A(U)

|

:0044DD9C 33C0 xor eax, eax

:0044DD9E 5A pop edx

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

:0044DC0C 55 push ebp

:0044DC0D 8BEC mov ebp, esp

:0044DC0F 6A00 push 00000000

:0044DC11 6A00 push 00000000

:0044DC13 6A00 push 00000000

:0044DC15 6A00 push 00000000

:0044DC17 6A00 push 00000000

:0044DC19 53 push ebx

:0044DC1A 56 push esi

:0044DC1B 894DFC mov dword ptr [ebp-04], ecx

:0044DC1E 8BF2 mov esi, edx

:0044DC20 8B45FC mov eax, dword ptr [ebp-04]

:0044DC23 E8BC62FBFF call 00403EE4

:0044DC28 33C0 xor eax, eax

:0044DC2A 55 push ebp

:0044DC2B 680ADD4400 push 0044DD0A

:0044DC30 64FF30 push dword ptr fs:[eax]

:0044DC33 648920 mov dword ptr fs:[eax], esp

:0044DC36 8D45F8 lea eax, dword ptr [ebp-08]

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

|

:0044DC39 BA24DD4400 mov edx, 0044DD24

:0044DC3E E8055FFBFF call 00403B48

:0044DC43 85F6 test esi, esi

:0044DC45 0F8499000000 je 0044DCE4

:0044DC4B 837DFC00 cmp dword ptr [ebp-04], 00000000

:0044DC4F 0F848F000000 je 0044DCE4

:0044DC55 8B45FC mov eax, dword ptr [ebp-04]

:0044DC58 E8D360FBFF call 00403D30 得到用户名长度

:0044DC5D 8BD8 mov ebx, eax 注册码第一部分开始计算

:0044DC5F 0FAFDE imul ebx, esi 用户名长度*25F5+用户名第一字符*29A

:0044DC62 8B45FC mov eax, dword ptr [ebp-04]

:0044DC65 0FB600 movzx eax, byte ptr [eax]

:0044DC68 69C09A020000 imul eax, 0000029A

:0044DC6E 03D8 add ebx, eax

:0044DC70 8D55F4 lea edx, dword ptr [ebp-0C]

:0044DC73 8BC3 mov eax, ebx

:0044DC75 E88AA3FBFF call 00408004 转10进制形式,得到注册码三部分的第一部分

:0044DC7A 8B55F4 mov edx, dword ptr [ebp-0C]

:0044DC7D 8D45F8 lea eax, dword ptr [ebp-08]

:0044DC80 B934DD4400 mov ecx, 0044DD34

:0044DC85 E8F260FBFF call 00403D7C 生成-

:0044DC8A 8B45FC mov eax, dword ptr [ebp-04] 注册码第二部分开始计算

:0044DC8D 0FB600 movzx eax, byte ptr [eax]

:0044DC90 F7EE imul esi 用户名第一字符*25F5*7B

:0044DC92 6BD87B imul ebx, eax, 0000007B

:0044DC95 FF75F8 push [ebp-08]

:0044DC98 8D55F0 lea edx, dword ptr [ebp-10]

:0044DC9B 8BC3 mov eax, ebx

:0044DC9D E862A3FBFF call 00408004 转10进制形式,得到第二部分

:0044DCA2 FF75F0 push [ebp-10]

:0044DCA5 6834DD4400 push 0044DD34

:0044DCAA 8D45F8 lea eax, dword ptr [ebp-08]

:0044DCAD BA03000000 mov edx, 00000003

:0044DCB2 E83961FBFF call 00403DF0 生成-

:0044DCB7 8B45FC mov eax, dword ptr [ebp-04]

:0044DCBA E87160FBFF call 00403D30 第三部分开始计算

:0044DCBF 8B55FC mov edx, dword ptr [ebp-04]

:0044DCC2 0FB612 movzx edx, byte ptr [edx]

:0044DCC5 F7EA imul edx 用户名第一字符*用户名长度*19D5

:0044DCC7 69D8D5190000 imul ebx, eax, 000019D5

:0044DCCD 03DE add ebx, esi 再加上25F5

:0044DCCF 8D55EC lea edx, dword ptr [ebp-14]

:0044DCD2 8BC3 mov eax, ebx

:0044DCD4 E82BA3FBFF call 00408004 转10进制形式,得到第三部分

:0044DCD9 8B55EC mov edx, dword ptr [ebp-14]

:0044DCDC 8D45F8 lea eax, dword ptr [ebp-08]

:0044DCDF E85460FBFF call 00403D38 与前部分合成到一起

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

|:0044DC45(C), :0044DC4F(C)

|

:0044DCE4 8B4508 mov eax, dword ptr [ebp+08]

:0044DCE7 8B55F8 mov edx, dword ptr [ebp-08]

:0044DCEA E8155EFBFF call 00403B04

:0044DCEF 33C0 xor eax, eax

:0044DCF1 5A pop edx

:0044DCF2 59 pop ecx

:0044DCF3 59 pop ecx

:0044DCF4 648910 mov dword ptr fs:[eax], edx

:0044DCF7 6811DD4400 push 0044DD11

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

|:0044DD0F(U)

|

:0044DCFC 8D45EC lea eax, dword ptr [ebp-14]

:0044DCFF BA05000000 mov edx, 00000005

:0044DD04 E8CB5DFBFF call 00403AD4

:0044DD09 C3 ret

6.相应TC注册机源码:

#include "string.h"

main()

{

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

char str[60];

clrscr();

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

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

printf(" 作者: 北极熊[DFCG] ( 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);

}

vb源代码:

Private Sub Command1_Click()

a = Text1.Text

b = Len(a)

c = Val(Asc(Mid(a, 1, 1)))

code1 = b * &H25F5 + c * &H29A

code2 = c * &H25F5 * &H7B

code3 = b * c * &H19D5 + &H25F5

code = code1 & "-" & code2 & "-" & code3

Text2.Text = code

End Sub

Private Sub Command2_Click()

End

End Sub

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

相关文章:

·语音界面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)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史