文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → 光盘卫士 V1.8算法分析

光盘卫士 V1.8算法分析

时间:2004/10/15 0:57:00来源:本站整理作者:蓝点我要评论(0)

 

破解对象:光盘卫士 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


    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程