- UID
- 45135
注册时间2008-2-10
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 怒 2017-7-19 15:45 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【破文标题】电子相册制作系统算法分析写注册机
【破文作者】yayazhi
【破解平台】winxp sp3
【破解工具】PEiD0.94、TheOD
【作者邮箱】[email protected]
【软件名称】家家乐电子相册2009
【软件大小】7.23M
【原版下载】http://shareware.skycn.com/soft/7013.htm
【软件简介】随着数码相机的普及,数码相机也已经逐渐进入到普通家庭的生活,大家在日常生活中拍摄了大量的照片,是不是碰到
大量相片的管理和分发问题,从而也导致这些的相片无从查询和观赏,更谈不上与朋友、亲人一同共享。 孩子的成长,假如能将
各个阶段的相片整理好,以一定的展现方式供父母及长大的孩子再来欣赏,那将是何等愉悦的事情。朋友、亲人在节日的聚会,能一
种方便的方式将聚会的场景分发给在位的所有人,那又是多开心的事情。一次美好的旅游,自己开心了,为什么不将所有的开心分享
给关心自己的人?
《家家乐电子相册制作系统》可以将您的相片按主题进行分类管理,可以生相册文件,直接刻录到光盘,直接在光盘上运行;也
可以生成VCD、SVCD或DVD视频文件,刻录成VCD、SVCD或DVD光盘,方便在家庭的任意VCD或DVD机上播放。
《家家乐电子相册制作系统》操作简单、使用方便、对软硬件要求低、功能实用强大,是您家庭制作VCD/DVD电子相册的最佳选
择。
步骤:
1.PEID-----Borland Delphi 6.0 - 7.0
2.OD载入,可以用查找字符串,F12堆栈调用,查找按钮事件到达关键处。
3.算法分析:
=======================================================================================
004CAAA5 |. 55 push ebp
004CAAA6 |. 68 9BAF4C00 push PicAlbum.004CAF9B
004CAAAB |. 64:FF30 push dword ptr fs:[eax]
004CAAAE |. 64:8920 mov dword ptr fs:[eax], esp
004CAAB1 |. 8D55 90 lea edx, [local.28]
004CAAB4 |. 8B45 F4 mov eax, [local.3] ; 假码给eax
004CAAB7 |. E8 E0EAF3FF call PicAlbum.0040959C
004CAABC |. 8B55 90 mov edx, [local.28]
004CAABF |. 8D45 F4 lea eax, [local.3] ; 假码给eax
004CAAC2 |. E8 9DA4F3FF call PicAlbum.00404F64
004CAAC7 |. 8B45 F4 mov eax, [local.3]
004CAACA |. E8 B5A6F3FF call PicAlbum.00405184 ; 计算输入注册码长度给eax
004CAACF |. 83F8 13 cmp eax, 13 ; 注册码必须是19位
004CAAD2 |. 74 1F je short PicAlbum.004CAAF3
004CAAD4 |. 8B45 F4 mov eax, [local.3]
004CAAD7 |. E8 A8A6F3FF call PicAlbum.00405184
004CAADC |. 83F8 17 cmp eax, 17 ; 是不是17H,23位
004CAADF |. 74 12 je short PicAlbum.004CAAF3 ; 是就跳
004CAAE1 |. 8B45 08 mov eax, [arg.1]
004CAAE4 |. BA B4AF4C00 mov edx, PicAlbum.004CAFB4 ; NONE给edx
004CAAE9 |. E8 32A4F3FF call PicAlbum.00404F20
004CAAEE |. E9 7D040000 jmp PicAlbum.004CAF70
004CAAF3 |> 8D55 F0 lea edx, [local.4]
004CAAF6 |. 8B45 F8 mov eax, [local.2] ; 用户名给eax
004CAAF9 |. E8 9EEAF3FF call PicAlbum.0040959C
004CAAFE |. 8B45 F0 mov eax, [local.4]
004CAB01 |. E8 7EA6F3FF call PicAlbum.00405184 ; 取用户名长度
004CAB06 |. 8BF8 mov edi, eax ; 长度给edi
004CAB08 |. 83FF 01 cmp edi, 1 ; 用户名长度是不是1
004CAB0B |. 7D 12 jge short PicAlbum.004CAB1F ; 大就跳
004CAB0D |. 8B45 08 mov eax, [arg.1]
004CAB10 |. BA B4AF4C00 mov edx, PicAlbum.004CAFB4 ; ASCII "NONE"
004CAB15 |. E8 06A4F3FF call PicAlbum.00404F20
004CAB1A |. E9 51040000 jmp PicAlbum.004CAF70
004CAB1F |> 83FF 10 cmp edi, 10 ; 是不是10H即16位。
004CAB22 |. 7D 25 jge short PicAlbum.004CAB49 ; 大就跳
004CAB24 |> 8D55 8C /lea edx, [local.29]
004CAB27 |. 8B45 F8 |mov eax, [local.2] ; 用户名给eax
004CAB2A |. E8 6DEAF3FF |call PicAlbum.0040959C ; 测试用户名是否合法
004CAB2F |. 8B55 8C |mov edx, [local.29] ; 用户名给edx
004CAB32 |. 8D45 F0 |lea eax, [local.4]
004CAB35 |. E8 52A6F3FF |call PicAlbum.0040518C
004CAB3A |. 8B45 F0 |mov eax, [local.4]
004CAB3D |. E8 42A6F3FF |call PicAlbum.00405184 ; 用户名叠加放eax
004CAB42 |. 8BF8 |mov edi, eax ; 长度A给edi
004CAB44 |. 83FF 10 |cmp edi, 10 ; 是不是10H,即16位,小于16位继续叠加
004CAB47 |.^ 7C DB \jl short PicAlbum.004CAB24 ; 小就跳,shine叠加成4个,长度14H即20位。
004CAB49 |> C645 97 50 mov byte ptr ss:[ebp-69], 50 ; P
004CAB4D |. C645 98 39 mov byte ptr ss:[ebp-68], 39 ; 9
004CAB51 |. C645 99 43 mov byte ptr ss:[ebp-67], 43 ; C
004CAB55 |. C645 9A 38 mov byte ptr ss:[ebp-66], 38 ; 8
004CAB59 |. C645 9B 55 mov byte ptr ss:[ebp-65], 55 ; U
004CAB5D |. C645 9C 37 mov byte ptr ss:[ebp-64], 37 ; 7
004CAB61 |. C645 9D 45 mov byte ptr ss:[ebp-63], 45 ; E
004CAB65 |. C645 9E 36 mov byte ptr ss:[ebp-62], 36 ; 6
004CAB69 |. C645 9F 48 mov byte ptr ss:[ebp-61], 48 ; H
004CAB6D |. C645 A0 35 mov byte ptr ss:[ebp-60], 35 ; 5
004CAB71 |. C645 A1 55 mov byte ptr ss:[ebp-5F], 55 ; U
004CAB75 |. C645 A2 34 mov byte ptr ss:[ebp-5E], 34 ; 4
004CAB79 |. C645 A3 49 mov byte ptr ss:[ebp-5D], 49 ; I
004CAB7D |. C645 A4 33 mov byte ptr ss:[ebp-5C], 33 ; 3
004CAB81 |. C645 A5 47 mov byte ptr ss:[ebp-5B], 47 ; G
004CAB85 |. C645 A6 32 mov byte ptr ss:[ebp-5A], 32 ; 2 定义字符串:P9C8U7E6H5U4I3G2
==============================================================================================================
004CAB89 |. 33DB xor ebx, ebx ; ebx=0,从零开始累加
004CAB8B |. 8D45 AC lea eax, [local.21]
004CAB8E |> 69D3 89000000 /imul edx, ebx, 89 ; edx=ebx*89H结果放edx,edx初值0,每次计算出的
结果单独存放,留下面用。
==============================================================================================================
004CAB94 |. 8910 |mov dword ptr ds:[eax], edx ; [eax]=edx=807,即F*89H=807
004CAB96 |. 43 |inc ebx ; ebx加一
004CAB97 |. 83C0 04 |add eax, 4 ; eax+4
004CAB9A |. 83FB 10 |cmp ebx, 10 ; 于16比较,计算16次。
004CAB9D |.^ 75 EF |jnz short PicAlbum.004CAB8E ; 不等回跳
004CAB9F |. 33F6 xor esi, esi
=====================================================================================================
004CABA1 |. 8B45 FC mov eax, [local.1] ; PicAlbum给eax
004CABA4 |. E8 DBA5F3FF call PicAlbum.00405184 ; 计算PicAlbum长度=8
004CABA9 |. 85C0 test eax, eax
004CABAB |. 7E 13 jle short PicAlbum.004CABC0
004CABAD |. BB 01000000 mov ebx, 1 ; ebx=1,esi=0
004CABB2 |> 8B55 FC |mov edx, [local.1] ; PicAlbum给edx
004CABB5 |. 0FB6541A FF |movzx edx, byte ptr ds:[edx+ebx-1] ; 逐位取ASCII
004CABBA |. 03F2 |add esi, edx ; esi=esi+edx,即给位ascii值的和
004CABBC |. 43 |inc ebx
004CABBD |. 48 |dec eax ; 结果esi=30D
=====================================================================================================
004CABBE |.^ 75 F2 |jnz short PicAlbum.004CABB2
004CABC0 |> 8BC7 mov eax, edi ; 用户名叠加的长度给eax
004CABC2 |. 85C0 test eax, eax
004CABC4 |. 7E 13 jle short PicAlbum.004CABD9
004CABC6 |. BB 01000000 mov ebx, 1 ; ebx=1
004CABCB |> 8B55 F0 |mov edx, [local.4] ; 叠加的用户名给edx
004CABCE |. 0FB6541A FF |movzx edx, byte ptr ds:[edx+ebx-1] ; 逐位取ascii值
004CABD3 |. 03F2 |add esi, edx ;esi=esi+edx,esi初值位30D上面计算的结果
004CABD5 |. 43 |inc ebx
004CABD6 |. 48 |dec eax ; eax作累加器
004CABD7 |.^ 75 F2 |jnz short PicAlbum.004CABCB ; 结果放esi=B69
======================================================================================================
004CABD9 |> 8BC7 mov eax, edi ; 用户名叠加长度14H放eax
004CABDB |. 48 dec eax ; eax减一
004CABDC |. 85C0 test eax, eax
004CABDE |. 7C 40 jl short PicAlbum.004CAC20
004CABE0 |. 40 inc eax ; 恢复eax的值
004CABE1 |. 33DB xor ebx, ebx ; ebx=0
004CABE3 |> 8B55 F0 |mov edx, [local.4] ; 叠加用户名放edx
004CABE6 |. 8A141A |mov dl, byte ptr ds:[edx+ebx] ; 逐位ascii给edx
004CABE9 |. 81E2 FF000000 |and edx, 0FF ; 逐位ascii给edx?
004CABEF |. 8BCB |mov ecx, ebx ; ecx=ebx=1
004CABF1 |. 81E1 0F000080 |and ecx, 8000000F ; ECX=0
004CABF7 |. 79 05 |jns short PicAlbum.004CABFE
004CABF9 |. 49 |dec ecx
004CABFA |. 83C9 F0 |or ecx, FFFFFFF0
004CABFD |. 41 |inc ecx
004CABFE |> 0FB64C0D 97 |movzx ecx, byte ptr ss:[ebp+ecx-69] ; 取常数逐位ascii
004CAC03 |. 0FAFD1 |imul edx, ecx ; edx=常数的逐位ascii*用户名的ascii值
004CAC06 |. 0FAFD6 |imul edx, esi ; edx=edx*两个字符串的ascii和(B69)
004CAC09 |. 8BCB |mov ecx, ebx
004CAC0B |. 81E1 0F000080 |and ecx, 8000000F
004CAC11 |. 79 05 |jns short PicAlbum.004CAC18
004CAC13 |. 49 |dec ecx
004CAC14 |. 83C9 F0 |or ecx, FFFFFFF0
004CAC17 |. 41 |inc ecx
004CAC18 |> 01548D AC |add dword ptr ss:[ebp+ecx*4-54], edx ; edx(01398E73)+上面的112逐位循环放在ss:
[ebp+ecx*4-54]
=============================================================================================================
逐位取叠加用户名的ascii乘以常数的ascii,再乘以两个常数的ascii值的和的结果
=============================================================================================================
004CAC1C |. 43 |inc ebx
004CAC1D |. 48 |dec eax
004CAC1E |.^ 75 C3 |jnz short PicAlbum.004CABE3 ; EDX=00FC17D8
004CAC20 |> BB 10000000 mov ebx, 10 ; 把16给ebx
004CAC25 |. 8D4D AC lea ecx, [local.21] ; local21给ecx
004CAC28 |. 8D75 97 lea esi, dword ptr ss:[ebp-69] ; 固定码给esi
004CAC2B |> 8B01 |mov eax, dword ptr ds:[ecx] ; eax=030CE1F0,第一次超出的计算结果
=============================================================================================================
004CAC2D |. BF FF010000 |mov edi, 1FF ; edi=1FF
004CAC32 |. 99 |cdq ; EDX=0
004CAC33 |. F7FF |idiv edi ; EAX/1FF=商18734,余数edx=124
004CAC35 |. 6BC2 35 |imul eax, edx, 35 ; EAX=余数EDX*35H=3C74
004CAC38 |. 6BC0 59 |imul eax, eax, 59 ; EAX=EAX*59=150454
004CAC3B |. BF 25000000 |mov edi, 25 ; EDI=25H
004CAC40 |. 99 |cdq ; EDX=0
004CAC41 |. F7FF |idiv edi ; EAX/25H=916A
004CAC43 |. 8BFA |mov edi, edx ; 余数EDX=2,给edi
004CAC45 |. 8939 |mov dword ptr ds:[ecx], edi
004CAC47 |. 83FF 24 |cmp edi, 24 ; 比较edi是不是36
004CAC4A |. 75 06 |jnz short PicAlbum.004CAC52
004CAC4C |. C701 12000000 |mov dword ptr ds:[ecx], 12
004CAC52 |> 8B01 |mov eax, dword ptr ds:[ecx] ; eax=【ecx】的值
004CAC54 |. 83F8 0A |cmp eax, 0A ; 比较edi是不是160
004CAC57 |. 7D 07 |jge short PicAlbum.004CAC60 ; 大就跳
004CAC59 |. 83C0 30 |add eax, 30 ; 值2加30H
004CAC5C |. 8806 |mov byte ptr ds:[esi], al ; 取计算出的ascii给替换固定码
004CAC5E |. EB 08 |jmp short PicAlbum.004CAC68
004CAC60 |> 83C0 41 |add eax, 41
004CAC63 |. 83E8 0A |sub eax, 0A
004CAC66 |. 8806 |mov byte ptr ds:[esi], al ; 把结果2替换固定码的前一位
004CAC68 |> 46 |inc esi
004CAC69 |. 83C1 04 |add ecx, 4
004CAC6C |. 4B |dec ebx
004CAC6D |.^ 75 BC |jnz short PicAlbum.004CAC2B
=============================================================================================================
004CAC6F |. 8B45 F4 mov eax, [local.3]
004CAC72 |. E8 0DA5F3FF call PicAlbum.00405184
004CAC77 |. 83F8 13 cmp eax, 13 ; 假码和13H比较
004CAC7A |. 0F85 F5000000 jnz PicAlbum.004CAD75
004CAC80 |. 8D45 F0 lea eax, [local.4]
004CAC83 |. E8 44A2F3FF call PicAlbum.00404ECC ; ecx=0
004CAC88 |. BB 04000000 mov ebx, 4 ; ebx=4
004CAC8D |. 8D75 97 lea esi, dword ptr ss:[ebp-69] ; 字母给esi
004CAC90 |> 8D45 88 |lea eax, [local.30]
004CAC93 |. 8A16 |mov dl, byte ptr ds:[esi] ; 取ascii
004CAC95 |. E8 12A4F3FF |call PicAlbum.004050AC
004CAC9A |. 8B55 88 |mov edx, [local.30]
004CAC9D |. 8D45 F0 |lea eax, [local.4]
004CACA0 |. E8 E7A4F3FF |call PicAlbum.0040518C ; edx=0
004CACA5 |. 46 |inc esi ; 取前四位2JYM
004CACA6 |. 4B |dec ebx
004CACA7 |.^ 75 E7 |jnz short PicAlbum.004CAC90
004CACA9 |. 8D45 F0 lea eax, [local.4]
004CACAC |. BA C4AF4C00 mov edx, PicAlbum.004CAFC4
004CACB1 |. E8 D6A4F3FF call PicAlbum.0040518C
004CACB6 |. BB 04000000 mov ebx, 4
004CACBB |. 8D75 9B lea esi, dword ptr ss:[ebp-65]
004CACBE |> 8D45 84 |lea eax, [local.31]
004CACC1 |. 8A16 |mov dl, byte ptr ds:[esi]
004CACC3 |. E8 E4A3F3FF |call PicAlbum.004050AC
004CACC8 |. 8B55 84 |mov edx, [local.31]
004CACCB |. 8D45 F0 |lea eax, [local.4]
004CACCE |. E8 B9A4F3FF |call PicAlbum.0040518C
004CACD3 |. 46 |inc esi
004CACD4 |. 4B |dec ebx
004CACD5 |.^ 75 E7 |jnz short PicAlbum.004CACBE ; 再取四位X1IT
004CACD7 |. 8D45 F0 lea eax, [local.4]
004CACDA |. BA C4AF4C00 mov edx, PicAlbum.004CAFC4
004CACDF |. E8 A8A4F3FF call PicAlbum.0040518C
004CACE4 |. BB 04000000 mov ebx, 4
004CACE9 |. 8D75 9F lea esi, dword ptr ss:[ebp-61]
004CACEC |> 8D45 80 |lea eax, [local.32]
004CACEF |. 8A16 |mov dl, byte ptr ds:[esi]
004CACF1 |. E8 B6A3F3FF |call PicAlbum.004050AC
004CACF6 |. 8B55 80 |mov edx, [local.32]
004CACF9 |. 8D45 F0 |lea eax, [local.4]
004CACFC |. E8 8BA4F3FF |call PicAlbum.0040518C
004CAD01 |. 46 |inc esi
004CAD02 |. 4B |dec ebx
004CAD03 |.^ 75 E7 |jnz short PicAlbum.004CACEC ; 再取四位LCYU
004CAD05 |. 8D45 F0 lea eax, [local.4]
004CAD08 |. BA C4AF4C00 mov edx, PicAlbum.004CAFC4
004CAD0D |. E8 7AA4F3FF call PicAlbum.0040518C
004CAD12 |. BB 04000000 mov ebx, 4
004CAD17 |. 8D75 A3 lea esi, dword ptr ss:[ebp-5D]
004CAD1A |> 8D85 7CFFFFFF |lea eax, [local.33]
004CAD20 |. 8A16 |mov dl, byte ptr ds:[esi]
004CAD22 |. E8 85A3F3FF |call PicAlbum.004050AC
004CAD27 |. 8B95 7CFFFFFF |mov edx, [local.33]
004CAD2D |. 8D45 F0 |lea eax, [local.4]
004CAD30 |. E8 57A4F3FF |call PicAlbum.0040518C
004CAD35 |. 46 |inc esi
004CAD36 |. 4B |dec ebx
004CAD37 |.^ 75 E1 |jnz short PicAlbum.004CAD1A ; 最后四位0U3N
004CAD39 |. 8B45 F0 mov eax, [local.4] ; 中加-符号
004CAD3C |. 8B55 F4 mov edx, [local.3] ; 假码
004CAD3F |. E8 84A5F3FF call PicAlbum.004052C8 ; 比较的关键跳可作内存注册机
004CAD44 |. 75 1D jnz short PicAlbum.004CAD63 ; 爆破点可以nop掉
====================================================================================================
4.算法分析步骤:
1.用户名不到不到16位,进行叠加,直到超过16位。
2.注册码可以是16位或23位,我这里只分析了16位的。
3.定义字符串P9C8U7E6H5U4I3G2
4.计算(0..15)*89H放数组1中
5.计算PicAlbum各位Ascii值的和
6.计算叠加后的用户名和PicAlbum各位Ascii值的和
7.两个字符各位的Ascii值的积加数组1对应各位的值。
8.最后的字符处理。
9.每四位截取字符串加‘-’最后组成注册码。
- ====================================================================================================
- delphi注册机源码
- ====================================================================================================
- var
- i,j,k,l,m,n,f:integer;
- Spic,Spic1,Sna,Sna1,y1,y2:integer;
- name,name1,s1,s2:string;
- arr1 : array[1..16] of Integer;
- arr2 : array[1..16] of Integer;
- arr3 : array[1..16] of string;
- reg,reg1,reg2,reg3,reg4:string; //第一变量
- begin
- s1:='P9C8U7E6H5U4I3G2'; //第一字符串
- s2:='PicAlbum';
- Spic:=0;
- Spic1:=0;
- Sna:=0;
- Sna1:=0; //初始化变量
- name:=Edit1.Text;
- f:=0;
- n:=length(name);
- if edit1.text='' then
- begin
- exit;
- edit1.SetFocus;
- end;
- if n>=16 then //判断用户名长度是否大于16
- name1:=name;
- if n<16 then
- while n<16 do
- begin
- name1:=name1+name;
- f:=f+1;
- n:=length(name);
- n:=n*f;
- end; //把用户名扩展到16位或以上
- for i := Low(arr1) to High(arr1) do //0-15分别乘以89H 结果放到arr1中
- arr1[i] := (i-1)*$89;
- for j := 1 to 8 do //计算 PicAlbum的Ascii值,8是PicAlbum的长度
- begin
- Spic1:=Ord(s2[j]);
- Spic:=Spic1+Spic;
- end;
- for k := 1 to length(name1) do
- begin
- Sna1:=Ord(name1[k]);
- Sna:=Sna1+Sna;
- end;
- Sna:=Spic+Sna; //结果是name1和PicAlbum的Ascii值和
- for l := 1 to length(name1) do
- begin
- if l<=16 then
- arr2[l]:=Ord(s1[l])*Ord(name1[l])*Sna+arr1[l];//两个字符各位的Ascii值的积加数
- //组一对应各位的值。
- if l>16 then
- arr2[l-16]:=Ord(s1[l-16])*Ord(name1[l])*Sna+arr2[l-16];
- //大于16位,叠加原来的计算值
- end; //到此字符的所有准备工作已经完成
- for m := 1 to 16 do
- begin
- y1:=arr2[m] Mod $1FF;
- y1:=y1*$35;
- y1:=y1*$59;
- y1:=y1 Mod $25;
- if y1=$24 then
- begin
- y2:=$12;
- y2:=y2+$41;
- y2:=y2-$0A;
- arr3[m]:=chr(y2);
- end;
- if y1<>$24 then
- begin
- if y1>=$0A then
- begin
- y1:=y1+$41;
- y1:=y1-$0A;
- arr3[m]:=chr(y1);
- end;
- if y1<$0A then
- begin
- y1:=y1+$30;
- arr3[m]:=chr(y1);
- end; //这段生成注册字符串
- end;
- end;
- reg1:=arr3[1]+arr3[2]+arr3[3]+arr3[4];
- reg2:=arr3[5]+arr3[6]+arr3[7]+arr3[8];
- reg3:=arr3[9]+arr3[10]+arr3[11]+arr3[12];
- reg4:=arr3[13]+arr3[14]+arr3[15]+arr3[16];
- reg:=reg1+'-'+reg2+'-'+reg3+'-'+reg4; //最后处理,用‘-’连接
- Edit2.Text:=reg;
- end;
- //============================================================================================
复制代码 这个软件有两套注册机制,另一种是23位的注册码类似:AAAAA-BBBBB-CCCCC-DDDDD,有兴趣的朋友可以分析一下。
用户名:yayazhi
注册码:R0VC-IHVB-CK7Z-LYVY
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|