Turbo
Photo V2.5 算法分析 作者:wzh123 软件大小:
4013 KB PJ工具:softice,W32Dasm8.93黄金版,FI2.5 姓名:wzh123 位,即0x34-->eax 0x32-->eax 0x31-->edx 0x61(a)-->ecx 3+0x31*2=0x65--->eax 0x65+0x61=0xc6-->eax "d"(0x64)-->eax
0x10+0x41=0x51("Q")
四组注册码的第一位应该为"Q" *
Referenced by a (U)nconditional or (C)onditional Jump at Address: 位,即"3"(0x33)-->edx "4"(0x34)-->eax "5"(0x35)-->eax "4"(0x34)-->ecx
) "4"(0x34)-->edx
"2"(0x32)-->eax
第四组注册码的第二位应该为"R" *
Referenced by a (U)nconditional or (C)onditional Jump at Address: 位,即"5"(0x35)-->edx "7"(0x37)-->edx "c"(0x63)-->edx
"5"(0x35)-->ebx
第四组注册码的第三位应该为"V"
*
Referenced by a (U)nconditional or (C)onditional Jump at Address: "3"(0x33)-->eax "6"(0x36)-->edi
"3"0x33-->edx edx=0x66 "4"(0x34)-->eax
第四组注册码的第四位应该为"R"
*
Referenced by a (U)nconditional or (C)onditional Jump at Address: 在这里,应该用真码,否则得不到真码的最后一位,所以这里取"Q"(0x51)-->eax 以第四组注册码的第五位应该为"T"
注册码格式:s1s2s3s4s5-s6s7s8s9s10-s11s12s13s14s15s16-s17s18s19s20s21 前16位任意,后五位由前16位推出。 算法: 1、s17=((((s5%7)+(s3%5))+s2*2+s1)%0x1A+0x41)&0xff; 注册码与姓名,公司无关。 一个有用的注册码:a1234-b2345-c34567-QRVRT
软件语言: 简体中文
软件类别: 国产软件 / 共享版 / 图像处理
应用平台: Win9x/NT/2000/XP
软件介绍:
Turbo Photo 是一个以数码影像为背景,面向数码相机普通用户和准专业用户而设计的一套集图片管理,浏览,处理,输出为一身的国产软件系统。如果您拥有数码相机,Turbo
Photo可以完成与之相关的绝大部分工作,成为您的数码相机最好伴侣。照片自动调整、美容、插值和打印、去除噪声、批量处理、浏览与管理....这几项是普通数码相机用户最关心的功能,以前,您也许需要下载3-5个软件来分别完成以上功能,现在您只需要拥有Turbo
Photo就全部搞定。不要认为集成在一起的软件就不专业,效果就不好了。Turbo Photo的设计使用了一流的独创的图像处理技术,使得这些应用的最终效果不逊于任何单项软件,甚至有所超出,譬如她是世界上第一个具有皮肤自动检测、识别与美化全自动处理技术的软件,可以在1分钟内达到数字美容的效果;领先于几乎所有同类软件(譬如PhotoShop)的图像插值技术可以让您的130万像素相机输出A4大幅面;综合去噪技术可以有效去除感光噪声和色彩斑点。同样也是首创的,面向问题的‘照片门诊部’可以轻松的解决照片里的不足,将您的照片调整到最佳的曝光与色彩...
... 同时,Turbo Photo简单的用户界面,大量的向导功能,使得您在第一次使用的时候就能轻松上手。是真真正正的傻瓜软件。
作者申明:只是学习,无其他目的。
本人刚刚学破解,错误在所难免,写的也很乱,请各位包涵,也请各位高手指教
1、软件没有加壳,用vc++编的;
2、注册码放在\winnt\system32\tpflag.rg
文件中。用softice下断,
公司:123
注册码:a1234-b2345-c34567-d4567
你一定可以来到这里:
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431D5B(C)
|
:00431D64
0FBE4204 movsx eax, byte
ptr [edx+04]--edx="a1234",将第一组注册码的第五
:00431D68
99 cdq
零扩展
:00431D69 B907000000 mov
ecx, 00000007 7-->ecx
:00431D6E
F7F9 idiv
ecx eax/ecx,即0x34/7
:00431D70
B905000000 mov ecx, 00000005
5-->ecx
:00431D75 8BFA
mov edi, edx
余数"3"--->edi
:00431D77 8B542414
mov edx, dword ptr [esp+14]
第一组注册码,即"a1234"-->edx
:00431D7B 0FBE4202
movsx eax, byte ptr [edx+02] 将第一组注册码的第三位,即
:00431D7F
99 cdq
零扩展
:00431D80 F7F9
idiv ecx
eax/ecx,即0x32/5
:00431D82 8B4C2414
mov ecx, dword ptr [esp+14] 第一组注册码,即"a1234"-->ecx
:00431D86
03FA add
edi, edx edi+edx-->edi
:00431D88
0FBE5101 movsx edx, byte
ptr [ecx+01] 将第一组注册码的第二位,即
:00431D8C
0FBE09 movsx ecx,
byte ptr [ecx] 将第一组注册码的第一位,即
:00431D8F
8D0457 lea eax,
dword ptr [edi+2*edx] edi+2*edx-->eax,本例中为
:00431D92
03C1 add
eax, ecx eax+ecx-->eax,本例中为
:00431D94
B91A000000 mov ecx, 0000001A
0x1a-->ecx
:00431D99 99
cdq
零扩展
:00431D9A
F7F9 idiv
ecx eax/ecx--0xc6/0x1a
:00431D9C
0FBE06 movsx eax,
byte ptr [esi] 将第四组注册码的第一位,即
:00431D9F 80C241 add
dl, 41 余数+0x41->dl,本例中为
:00431DA2 81E2FF000000
and edx, 000000FF 取edx低位
:00431DA8 3BC2
cmp eax, edx
比较,相等则继续,否则over,所以第
:00431DAA
7409 je 00431DB5
跳,(爆破点)
:00431DAC
5F pop
edi
:00431DAD 5E
pop esi
:00431DAE 5D
pop ebp
:00431DAF 33C0
xor eax, eax
:00431DB1 5B
pop ebx
:00431DB2
C21000 ret 0010
|:00431DAA(C)
|
:00431DB5
0FBE5302 movsx edx, byte
ptr [ebx+02] ebx="b2345",将第二组注册码的第三
:00431DB9
0FBE4303 movsx eax, byte
ptr [ebx+03] 将第二组注册码的第四位,即
:00431DBD
89542418 mov dword ptr
[esp+18], edx 0x33-->ss:[0012FEC8]
:00431DC1 BF03000000
mov edi, 00000003
3-->edi
:00431DC6 99
cdq
:00431DC7 F7FF
idiv edi
0x34/3
:00431DC9 0FBE4304
movsx eax, byte ptr [ebx+04] 将第二组注册码的第五位,即
:00431DCD
0FBE4E01 movsx ecx, byte
ptr [esi+01] 将第四组注册码的第二位,即
:00431DD1 8D3C80 lea
edi, dword ptr [eax+4*eax] eax*5-->edi,本例中为0x109-->edi
:00431DD4 8B442418
mov eax, dword ptr [esp+18]
ss:[0012FEC8],即"0x33"-->eax(见上
:00431DD8
03C2 add
eax, edx 余数+eax-->eax,本例中为0x34->eax
:00431DDA
0FBE13 movsx edx,
byte ptr [ebx] 将第四组注册码的第二位,即
:00431DDD 03F8
add edi, eax edi+eax,即0x109+0x34=0x13D-->edi
:00431DDF
0FBE4301 movsx eax, byte
ptr [ebx+01] 将第二组注册码的第二位,即
:00431DE3 8D1457 lea
edx, dword ptr [edi+2*edx] edx=0x201
:00431DE6 BF1A000000
mov edi, 0000001A
0x1A-->edi
:00431DEB 03C2
add eax, edx
eax=0x233
:00431DED 99
cdq
:00431DEE F7FF
idiv edi
:00431DF0 80C241
add dl, 41
余数+0x41->dl
:00431DF3
81E2FF000000 and edx, 000000FF
:00431DF9
3BCA cmp
ecx, edx 比较,相等则继续,否则over,所以
:00431DFB
7409 je 00431E06
跳,(爆破点)
:00431DFD
5F pop
edi
:00431DFE 5E
pop esi
:00431DFF 5D
pop ebp
:00431E00 33C0
xor eax, eax
:00431E02 5B
pop ebx
:00431E03
C21000 ret 0010
|:00431DFB(C)
|
:00431E06
0FBE5503 movsx edx, byte
ptr [ebp+03] ebp="c3456",将第三组注册码的第四
:00431E0A
BF1A000000 mov edi, 0000001A
0x1A-->edi
:00431E0F 8D0452
lea eax, dword ptr [edx+2*edx]
eax=0x9F
:00431E12 C1E003
shl eax, 03
移位,即作乘法,eax=0x4F8
:00431E15 2BC2
sub eax, edx
0x4F8-0x35=0x4c3-->eax
:00431E17 0FBE5505
movsx edx, byte ptr [ebp+05] 将第三组注册码的第六位,即
:00431E1B
03C2 add
eax, edx eax=0x4FA
:00431E1D
0FBE5500 movsx edx, byte
ptr [ebp+00] 将第三组注册码的第一位,即
:00431E21 03C2
add eax, edx eax=0x55D
:00431E23
99 cdq
:00431E24
F7FF idiv
edi
:00431E26 0FBE5E02
movsx ebx, byte ptr [esi+02] 将第四组注册码的第三位,即
:00431E2A 80C241 add
dl, 41 余数+0x41,本例中为0x56(V)-->dl
:00431E2D
81E2FF000000 and edx, 000000FF
:00431E33
3BDA cmp
ebx, edx 比较,相等则继续,否则over,所以
:00431E35 7409
je 00431E40
跳,(爆破点)
:00431E37 5F
pop edi
:00431E38 5E
pop esi
:00431E39 5D
pop
ebp
:00431E3A 33C0
xor eax, eax
:00431E3C 5B
pop ebx
:00431E3D C21000
ret 0010
|:00431E35(C)
|
:00431E40
0FBE4501 movsx eax, byte
ptr [ebp+01] 将第三组注册码的第二位,即
:00431E44
0FBE7E03 movsx edi, byte
ptr [esi+03] 将第四组注册码的第四位,即
:00431E48 8D14C500000000 lea edx, dword
ptr [8*eax+00000000] edx=0x198
:00431E4F 2BD0
sub edx, eax
edx=0x165
:00431E51 8B442414
mov eax, dword ptr [esp+14]
将第一组注册码"a1234"-->eax
:00431E55 89542414
mov dword ptr [esp+14], edx 0x165-->ss[0012FEC4]
:00431E59
0FBE5003 movsx edx, byte
ptr [eax+03] 将第一组注册码的第四位,即
:00431E5D
03542418 add edx, dword
ptr [esp+18] 0x33+ss[0012FEC8](见上),
:00431E61
0FBE4502 movsx eax, byte
ptr [ebp+02] 将第三组注册码的第三位,即
:00431E65
8B6C2414 mov ebp, dword
ptr [esp+14] ss[0012FEC4],即0x165-->ebp
:00431E69 03D5
add edx, ebp
edx=0x1CB
:00431E6B
BD1A000000 mov ebp, 0000001A
0x1A-->ebp
:00431E70 03C2
add eax, edx
eax=0x1FF
:00431E72
99 cdq
:00431E73
F7FD idiv
ebp
:00431E75 80C241
add dl, 41
余数+0x41,本例中为0x52(R)-->dl
:00431E78 81E2FF000000
and edx, 000000FF
:00431E7E 3BFA
cmp edi, edx
比较,相等则继续,否则over,所以
:00431E80 7409
je 00431E8B
跳,(爆破点)
:00431E82 5F
pop edi
:00431E83 5E
pop esi
:00431E84
5D pop
ebp
:00431E85 33C0
xor eax, eax
:00431E87 5B
pop ebx
:00431E88 C21000
ret 0010
|:00431E80(C)
|
:00431E8B
0FBE06 movsx eax,
byte ptr [esi] 将第四组注册码的第一位-->eax,
:00431E8E
8D148B lea edx,
dword ptr [ebx+4*ecx] edx=0x19E
:00431E91 03CA
add ecx, edx
ecx=0x1F0
:00431E93 8D0440
lea eax, dword ptr [eax+2*eax]
eax*3-->eax,这里eax=0xF3
:00431E96 8D0C79
lea ecx, dword ptr [ecx+2*edi] ecx=0x294
:00431E99
5F pop
edi
:00431E9A 03C1
add eax, ecx
eax=0x387
:00431E9C B91A000000
mov ecx, 0000001A
0x1A-->ecx
:00431EA1 99
cdq
:00431EA2 F7F9
idiv ecx
:00431EA4 0FBE4604
movsx eax, byte ptr [esi+04] 将第四组注册码的第五位-->eax
:00431EA8
33C9 xor
ecx, ecx
:00431EAA 5E
pop esi
:00431EAB 5D
pop ebp
:00431EAC 5B
pop ebx
:00431EAD
80C241 add dl, 41
余数+0x41,本例中为0x54(T)-->dl
:00431EB0
81E2FF000000 and edx, 000000FF
:00431EB6
3BC2 cmp
eax, edx 比较,相等则继续,否则over,所
:00431EB8 0F94C1
sete cl
相等则条件为真,(爆破点)
:00431EBB 8BC1
mov eax, ecx
:00431EBD
C21000 ret 0010
算法总结:
2、s18=(((s9%3)+s8+s10*5+s6*2+s7)%0x1A+0x41)&0xff;
3、s19=((s14*23+s16+s11)%0x1A+0x41)&0xff;
4、s20=((s4+s8+s12*7+s13)%0x1A+0x41)&0xff;
5、s21=((s18*5+s19+s20*2+s17*3)%0x1A+0x41)&0xff.
- 标 题:Turbo Photo V2.5 算法分析
- 作 者:wzh123
- 时 间:2003/05/10
12:34pm
- 链 接:http://bbs.pediy.com