Floppy Zip Disk Rescue注册码分析
【软件版本】 V1.2.0
【下载地址】 http://www6.skycn.com/soft/25468.html
----------------------------------------------------------------------------------------
【加密方式】 序列号
【破解工具】 OD
【软件限制】 时间限制
【破解平台】 Microsoft Windows XP Professional
----------------------------------------------------------------------------------------
【软件简介】
Floppy Zip Disk Rescue 是一个非常容易使用的文件拯救工具,它能够从软盘、ZIP 磁盘或其他外部设备中将已损坏的文件抢救出来;它能够快速地扫描扇区,拯救已损坏的文件,并仅可能地将正确的数据复制到硬盘中。 这个程序对于已损坏的多媒体文件、音频文件、视频文件、图像文件,例如 MPEG、AVI、RM、MP3、JPEG 等等,以及损坏的文档和文本文件尤其有效。
【说明】
CrAcK 4 FuN! 无壳,无Anti-debug, 无加密算法,难度为最最最简单,好久没有动手了,只为温习,高手勿看
------------------------------------------------------------------------------------
【破解过程】
试验所用
Registered name:xcvm
Registered code:12345678
很容易找到以下代码:
00410E93 8B46 70 mov eax,dword ptr ds:[esi+70]
00410E96 8B68 F4 mov ebp,dword ptr ds:[eax-C]
00410E99 83FD 02 cmp ebp,2 ; 比较用户名,是否大于或等于2位
00410E9C 7D 15 jge short FZDR.00410EB3 ; 符合则跳
00410E9E 6A 00 push 0
00410EA0 6A 00 push 0
00410EA2 68 3C1F4400 push FZDR.00441F3C ; ASCII "Please input correct User Name!"
00410EA7 E8 CD5C0200 call FZDR.00436B79
00410EAC 5F pop edi
00410EAD 5E pop esi
00410EAE 5D pop ebp
00410EAF 83C4 0C add esp,0C
00410EB2 C3 retn
00410EB3 8B4E 74 mov ecx,dword ptr ds:[esi+74] ; 注册码进栈
00410EB6 8379 F4 08 cmp dword ptr ds:[ecx-C],8 ; 判断是否是8位
00410EBA 7D 15 jge short FZDR.00410ED1 ; 大于等于跳,否则提示输入正确注册码
00410EBC 6A 00 push 0
00410EBE 6A 00 push 0
00410EC0 68 141F4400 push FZDR.00441F14 ; ASCII "Please input correct Registration Code!"
00410EC5 E8 AF5C0200 call FZDR.00436B79
00410ECA 5F pop edi
00410ECB 5E pop esi
00410ECC 5D pop ebp
00410ECD 83C4 0C add esp,0C
00410ED0 C3 retn
00410ED1 8B46 70 mov eax,dword ptr ds:[esi+70] ; eax=用户名
00410ED4 8B48 F4 mov ecx,dword ptr ds:[eax-C] ; ecx=注册码.
00410ED7 85C9 test ecx,ecx
00410ED9 7D 0A jge short FZDR.00410EE5
00410EDB 68 57000780 push 80070057
00410EE0 E8 1B04FFFF call FZDR.00401300
00410EE5 8A10 mov dl,byte ptr ds:[eax] ; 用户名
00410EE7 8B46 70 mov eax,dword ptr ds:[esi+70]
00410EEA 3978 F4 cmp dword ptr ds:[eax-C],edi
00410EED 7D 0A jge short FZDR.00410EF9
00410EEF 68 57000780 push 80070057
00410EF4 E8 0704FFFF call FZDR.00401300
00410EF9 8A40 01 mov al,byte ptr ds:[eax+1] ; 第二位
00410EFC 884424 0E mov byte ptr ss:[esp+E],al
00410F00 8B46 70 mov eax,dword ptr ds:[esi+70]
00410F03 8B48 F4 mov ecx,dword ptr ds:[eax-C]
00410F06 85C9 test ecx,ecx
00410F08 7D 0A jge short FZDR.00410F14
00410F0A 68 57000780 push 80070057
00410F0F E8 EC03FFFF call FZDR.00401300
00410F14 8B4E 70 mov ecx,dword ptr ds:[esi+70]
00410F17 53 push ebx
00410F18 8A18 mov bl,byte ptr ds:[eax] ; 第一位
00410F1A 3979 F4 cmp dword ptr ds:[ecx-C],edi
00410F1D 7D 0A jge short FZDR.00410F29
00410F1F 68 57000780 push 80070057
00410F24 E8 D703FFFF call FZDR.00401300
00410F29 0FB6C2 movzx eax,dl ; 看0EE5,dl进第一位
00410F2C 83C8 46 or eax,46 ; or 78,46 x=78 eax=7E
00410F2F 99 cdq ; EDX=00000000
00410F30 BF 0A000000 mov edi,0A ; EDI=0A
00410F35 F7FF idiv edi ; EAX除以0A 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算).
00410F37 0FB64424 12 movzx eax,byte ptr ss:[esp+12] ; 第二位
00410F3C 83C8 5A or eax,5A ; or 63,5A c=63
00410F3F 885424 16 mov byte ptr ss:[esp+16],dl
00410F43 99 cdq
00410F44 F7FF idiv edi ; OA
00410F46 0FB6C3 movzx eax,bl ; bl=第一位
00410F49 83C8 52 or eax,52
00410F4C 885424 12 mov byte ptr ss:[esp+12],dl
00410F50 99 cdq
00410F51 F7FF idiv edi
00410F53 0FB641 01 movzx eax,byte ptr ds:[ecx+1] ; 第二位
00410F57 83C8 45 or eax,45
00410F5A 8BCF mov ecx,edi ; 0A
00410F5C 885424 17 mov byte ptr ss:[esp+17],dl
00410F60 99 cdq
00410F61 F7F9 idiv ecx ; OA
00410F63 33C0 xor eax,eax ; 清零
00410F65 33C9 xor ecx,ecx ; 清零
00410F67 85ED test ebp,ebp
00410F69 885424 18 mov byte ptr ss:[esp+18],dl
00410F6D 7E 20 jle short FZDR.00410F8F
00410F6F 90 nop
00410F70 85C9 test ecx,ecx
00410F72 0F8C D2000000 jl FZDR.0041104A
00410F78 8B7E 70 mov edi,dword ptr ds:[esi+70] ; 用户名
00410F7B 3B4F F4 cmp ecx,dword ptr ds:[edi-C]
00410F7E 0F8F C6000000 jg FZDR.0041104A
00410F84 0FB6140F movzx edx,byte ptr ds:[edi+ecx]
00410F88 03C2 add eax,edx ; 用户名ASCII码累加
00410F8A 41 inc ecx
00410F8B 3BCD cmp ecx,ebp
00410F8D ^ 7C E1 jl short FZDR.00410F70
00410F8F 8B4E 74 mov ecx,dword ptr ds:[esi+74]
00410F92 8B51 F4 mov edx,dword ptr ds:[ecx-C]
00410F95 85D2 test edx,edx
00410F97 7D 0A jge short FZDR.00410FA3
00410F99 68 57000780 push 80070057
00410F9E E8 5D03FFFF call FZDR.00401300
00410FA3 8A11 mov dl,byte ptr ds:[ecx]
00410FA5 8B4E 74 mov ecx,dword ptr ds:[esi+74]
00410FA8 8379 F4 01 cmp dword ptr ds:[ecx-C],1
00410FAC 885424 19 mov byte ptr ss:[esp+19],dl
00410FB0 7D 0A jge short FZDR.00410FBC
00410FB2 68 57000780 push 80070057
00410FB7 E8 4403FFFF call FZDR.00401300
00410FBC 8A49 01 mov cl,byte ptr ds:[ecx+1]
00410FBF 8B7E 74 mov edi,dword ptr ds:[esi+74]
00410FC2 884C24 13 mov byte ptr ss:[esp+13],cl
00410FC6 837F F4 02 cmp dword ptr ds:[edi-C],2
00410FCA 7D 0A jge short FZDR.00410FD6
00410FCC 68 57000780 push 80070057
00410FD1 E8 2A03FFFF call FZDR.00401300
00410FD6 8A4F 02 mov cl,byte ptr ds:[edi+2]
00410FD9 8B7E 74 mov edi,dword ptr ds:[esi+74]
00410FDC 884C24 14 mov byte ptr ss:[esp+14],cl
00410FE0 837F F4 03 cmp dword ptr ds:[edi-C],3
00410FE4 7D 0A jge short FZDR.00410FF0
00410FE6 68 57000780 push 80070057
00410FEB E8 1003FFFF call FZDR.00401300
00410FF0 8A4F 03 mov cl,byte ptr ds:[edi+3]
00410FF3 8B7E 74 mov edi,dword ptr ds:[esi+74]
00410FF6 884C24 15 mov byte ptr ss:[esp+15],cl
00410FFA 837F F4 04 cmp dword ptr ds:[edi-C],4
00410FFE 7D 0A jge short FZDR.0041100A
00411000 68 57000780 push 80070057
00411005 E8 F602FFFF call FZDR.00401300
0041100A 8A4F 04 mov cl,byte ptr ds:[edi+4]
0041100D 8B7E 74 mov edi,dword ptr ds:[esi+74]
00411010 837F F4 05 cmp dword ptr ds:[edi-C],5
00411014 7D 0A jge short FZDR.00411020
00411016 68 57000780 push 80070057
0041101B E8 E002FFFF call FZDR.00401300
00411020 8A5F 05 mov bl,byte ptr ds:[edi+5]
00411023 8B7E 74 mov edi,dword ptr ds:[esi+74]
00411026 885C24 1A mov byte ptr ss:[esp+1A],bl
0041102A 837F F4 06 cmp dword ptr ds:[edi-C],6
0041102E 7D 0A jge short FZDR.0041103A
00411030 68 57000780 push 80070057
00411035 E8 C602FFFF call FZDR.00401300
0041103A 8A5F 06 mov bl,byte ptr ds:[edi+6]
0041103D 8B7E 74 mov edi,dword ptr ds:[esi+74]
00411040 885C24 1B mov byte ptr ss:[esp+1B],bl
00411044 837F F4 07 cmp dword ptr ds:[edi-C],7
00411048 7D 0A jge short FZDR.00411054
0041104A 68 57000780 push 80070057
0041104F E8 AC02FFFF call FZDR.00401300
00411054 8A5F 07 mov bl,byte ptr ds:[edi+7]
00411057 0FB67C24 16 movzx edi,byte ptr ss:[esp+16]
0041105C 0FB6D2 movzx edx,dl ; 注册码第一位
0041105F 83EA 30 sub edx,30
00411062 3BFA cmp edi,edx ; 第一位=30+6
00411064 75 48 jnz short FZDR.004110AE
00411066 0FB65424 13 movzx edx,byte ptr ss:[esp+13] ; 注册码第2位
0041106B 0FB67C24 12 movzx edi,byte ptr ss:[esp+12]
00411070 83EA 30 sub edx,30
00411073 3BFA cmp edi,edx ; 第2位=30+3
00411075 75 37 jnz short FZDR.004110AE
00411077 0FB65424 14 movzx edx,byte ptr ss:[esp+14]
0041107C 0FB67C24 17 movzx edi,byte ptr ss:[esp+17]
00411081 83EA 30 sub edx,30
00411084 3BFA cmp edi,edx ; 第3位=30+2
00411086 75 26 jnz short FZDR.004110AE
00411088 0FB65424 15 movzx edx,byte ptr ss:[esp+15]
0041108D 0FB67C24 18 movzx edi,byte ptr ss:[esp+18]
00411092 83EA 30 sub edx,30
00411095 3BFA cmp edi,edx ; 第4位=30+3
00411097 75 15 jnz short FZDR.004110AE
00411099 99 cdq
0041109A BF 0A000000 mov edi,0A
0041109F F7FF idiv edi
004110A1 0FB6C2 movzx eax,dl
004110A4 0FB6D1 movzx edx,cl ; 第5位%0A+30
004110A7 83EA 30 sub edx,30
004110AA 3BC2 cmp eax,edx
004110AC 74 36 je short FZDR.004110E4 ; 若注册码不符合规则,再比较是否是万能注册码
004110AE 807C24 19 39 cmp byte ptr ss:[esp+19],39 ; 第1位=9
004110B3 0F85 81000000 jnz FZDR.0041113A ; 第2位=3
004110B9 807C24 13 33 cmp byte ptr ss:[esp+13],33
004110BE 75 7A jnz short FZDR.0041113A
004110C0 807C24 14 30 cmp byte ptr ss:[esp+14],30 ; 第3位=0
004110C5 75 73 jnz short FZDR.0041113A
004110C7 807C24 15 31 cmp byte ptr ss:[esp+15],31 ; 第4位=1
004110CC 75 6C jnz short FZDR.0041113A
004110CE B0 36 mov al,36
004110D0 3AC8 cmp cl,al ; 第5位=6
004110D2 75 66 jnz short FZDR.0041113A
004110D4 384424 1A cmp byte ptr ss:[esp+1A],al ; 第6位=6
004110D8 75 60 jnz short FZDR.0041113A
004110DA 384424 1B cmp byte ptr ss:[esp+1B],al ; 第7位=6
004110DE 75 5A jnz short FZDR.0041113A
004110E0 3AD8 cmp bl,al ; 第8位=6
004110E2 75 56 jnz short FZDR.0041113A ; 关键点比较点了
004110E4 6A 00 push 0
004110E6 6A 00 push 0
004110E8 68 F81E4400 push FZDR.00441EF8 ; ASCII "Registration has succeeded!"
004110ED E8 875A0200 call FZDR.00436B79
004110F2 8B7E 70 mov edi,dword ptr ds:[esi+70]
004110F5 E8 CE990200 call FZDR.0043AAC8
004110FA 8B40 04 mov eax,dword ptr ds:[eax+4]
004110FD 57 push edi
004110FE 68 48104400 push FZDR.00441048 ; ASCII "username"
00411103 68 40104400 push FZDR.00441040 ; ASCII "Option"
00411108 8BC8 mov ecx,eax
0041110A E8 815B0200 call FZDR.00436C90
0041110F 8B7E 74 mov edi,dword ptr ds:[esi+74]
00411112 E8 B1990200 call FZDR.0043AAC8
00411117 8B40 04 mov eax,dword ptr ds:[eax+4]
0041111A 57 push edi
0041111B 68 2C104400 push FZDR.0044102C ; ASCII "registration_code"
00411120 68 40104400 push FZDR.00441040 ; ASCII "Option"
00411125 8BC8 mov ecx,eax
00411127 E8 645B0200 call FZDR.00436C90
0041112C 5B pop ebx
0041112D 5F pop edi
0041112E 8BCE mov ecx,esi
00411130 5E pop esi
00411131 5D pop ebp
00411132 83C4 0C add esp,0C
00411135 E9 C4010200 jmp FZDR.004312FE
0041113A 6A 00 push 0
0041113C 6A 00 push 0
0041113E 68 E01E4400 push FZDR.00441EE0 ; ASCII "Registration failed!"
00411143 E8 315A0200 call FZDR.00436B79
00411148 5B pop ebx
00411149 5F pop edi
0041114A 5E pop esi
0041114B 5D pop ebp
0041114C 83C4 0C add esp,0C
0041114F C3 retn
【总结】
要求:用户名至少两位
注册码:至少8位
注册码运算过程:
第一位为:用户名的第1位ASCII码或0x46后除以0x0A(即取其余数)+0x30
第二位为:用户名的第2位ASCII码或0x5A后除以0x0A +0x30
第三位为:用户名的第1位ASCII码或0x52后除以0x0A +0x30
第四位为:用户名的第2位ASCII码或0x45后除以0x0A +0x30
第五位为:用户名的ASCII码相加后除以0x0A取其余数 +0x30
以后注册码任意
万能注册码:93016666
范例 UserName=xcvm Code=63236000
注册机算法(TC):
#include "stdio.h"
int main()
{ int i,k,n1,n2,n3,n4,n5=0;
char name[255] = {0};
printf("用户名要大于或等于2,得出来的注册码最少为8位,但第6位及以后为任意,可使用万能注册码9301666。Enjoy yourself!!!\n\n");
printf("请输入用户名>=2:");
scanf("%s",&name);
k=strlen(name);
for (i=0;i<k;i++)
{ n5+=name[i];
}
n1=(name[0] & 0xFF | 0x46)%0xA & 0xFF+0x30;
n2=(name[1] & 0xFF | 0x5A)%0xA & 0xFF+0x30;
n3=(name[0] & 0xFF | 0x52)%0xA & 0xFF+0x30;
n4=(name[1] & 0xFF | 0x45)%0xA & 0xFF+0x30;
n5=n5%0xA & 0xFF+0x30;
printf("%d%d%d%d%d000\n",n1,n2,n3,n4,n5);
}
点这下载源码FZDR_TC.rar
本想试其它语言的,被某人说不理她,一乱就没有继续……
改天再MASM、VC
转载于:https://www.cnblogs.com/xcvm/archive/2006/02/22/335803.html
Floppy Zip Disk Rescue注册码分析相关推荐
- 20220209-CTF MISC-BUUCTF-伪加密(ZIP文件块 十六进制分析)
MISC-BUUCTF-zip伪加密 [1]下载附件提示要求输入解压密码 在Windows环境下可以看到有一个flag.txt 但是打开flag.txt需要输入密码: 如果用winhex打开,也可以看 ...
- python中zip()函数的用法_Python zip()函数用法实例分析
本文实例讲述了python zip()函数用法.分享给大家供大家参考,具体如下: 这里介绍python中zip()函数的使用: >>> help(zip) Help on built ...
- 关于谷歌浏览器主页被篡改无法修正的样例分析与解决方案
关于谷歌浏览器主页被篡改无法修正的样例分析与解决方案 首先写在前面,浏览器被修改主页的情况很多,此次分析的仅为一个样例且给出解决的方法.本文主要提供自身经历和解决的思路,因为水平有限,无法给出专业化的 ...
- Nova Suspend/Rescue 操作详解 - 每天5分钟玩转 OpenStack(35)
本节我们讨论 Suspend/Resume 和 Rescue/Unrescue 这两组操作. Suspend/Resume 有时需要长时间暂停 instance,可以通过 Suspend 操作将 in ...
- Android ART 分析
对Android ART的分析,主要包括ART Runtime启动过程以及dex2oat的分析. 由于代码量较多,忽略了很多细节,所以分析过程会存在错误:ART Runtime采用单例模式,启动过程中 ...
- 性能测试之操作系统计数器分析方法
内存分析方法: 内存分析用于判断系统有无遇到内存瓶颈,是否需要通过增加内存等手段提高系统性能表现.内存分析需要使用计数器:Memory & Physical Disk类别的计数器,以下是内存分 ...
- 性能测试知多少--系统计数器与硬件分析
性能计数器(Performance Counter),也叫性能监视器.一个人健康状况如何,我们通过对其做各项体检获得相关的状况指标,如血压.心跳,肺活量等.那么在做性能测试过程中,整个系统的软硬件进行 ...
- 服务器性能瓶颈分析方法
1. 内存分析方法 内存分析用于判断系统有无内存瓶颈,是否需要通过增加内存等手段提高系统性能表现. 内存分析需要使用的计数器:Memory类别和Physical Disk类别的计数器.内存分析的主要方 ...
- linux性能测试 瓶颈,性能测试——瓶颈分析方法
1.内存分析方法 内存分析用于判断系统有无内存瓶颈,是否需要通过增加内存等手段提高系统性能表现. 内存分析需要使用的计数器:Memory类别和Physical Disk类别的计数器.内存分析的主要方法 ...
最新文章
- sqlserver date转nvarchar_数据库干货:整理SQLServer非常实用的脚本
- 基于Java+SpringBoot+vue+element实现校园闲置物品交易网站
- 嵌入式Linux系统编程学习之三十线程的同步
- 权限管理----用户与模块关系
- windows下的Zcash钱包(ZEC钱包)-zcash4win 1.0.11
- WEB前端性能优化总结——如何提高网页加载速度
- 收藏:通俗讲解计算机工作原理
- 数据分析 超市条码_超市商品管理的11个常见问题 | 经验借鉴 | 商品管理
- 开环单位增益带宽 , 与-3db的关系
- MVCC和InnoDB行锁
- 爬虫字体替换(一)天眼查
- 要留住优秀员工,除了钱,你还可以用什么?
- 计算机科技手抄报内容,科技手抄报内容-科技在我身边
- micropython控制舵机,Micropython之pwm控制舵机
- Gradle 4.4 版本 百度云网盘地址(永久有效)
- 项目实战:Qt贝塞尔曲线拽托顶点实时显示工具
- 推荐一款超快的Android模拟器
- Excel VBA:填充——FillDown方法
- 网站压力测试--abtest测试详解abtest
- 途牛旅游项目练习-登录篇