Turbo Photo V2.5 演算法分析
Turbo Photo V2.5 演算法分析
作者:wzh123
軟體大小:
4013 KB
軟體語言: 簡體中文
軟體類別: 國產軟體 / 共享版 / 影像處理
應用平臺: Win9x/NT/2000/XP
軟體介紹:
Turbo Photo 是一個以數碼影像為背景,面向數位相機普通使用者和準專業使用者而設計的一套集圖片管理,瀏覽,處理,輸出為一身的國產軟體系統。如果您擁有數位相機,Turbo
Photo可以完成與之相關的絕大部分工作,成為您的數位相機最好伴侶。照片自動調整、美容、插值和列印、去除噪聲、批次處理、瀏覽與管理....這幾項是普通數位相機使用者最關心的功能,以前,您也許需要下載3-5個軟體來分別完成以上功能,現在您只需要擁有Turbo
Photo就全部搞定。不要認為整合在一起的軟體就不專業,效果就不好了。Turbo Photo的設計使用了一流的獨創的影像處理技術,使得這些應用的最終效果不遜於任何單項軟體,甚至有所超出,譬如她是世界上第一個具有皮膚自動檢測、識別與美化全自動處理技術的軟體,可以在1分鐘內達到數字美容的效果;領先於幾乎所有同類軟體(譬如PhotoShop)的影像插值技術可以讓您的130萬畫素相機輸出A4大幅面;綜合去噪技術可以有效去除感光噪聲和色彩斑點。同樣也是首創的,面向問題的‘照片門診部’可以輕鬆的解決照片裡的不足,將您的照片調整到最佳的曝光與色彩...
... 同時,Turbo Photo簡單的使用者介面,大量的嚮導功能,使得您在第一次使用的時候就能輕鬆上手。是真真正正的傻瓜軟體。
PJ工具:softice,W32Dasm8.93黃金版,FI2.5
作者申明:只是學習,無其他目的。
本人剛剛學破解,錯誤在所難免,寫的也很亂,請各位包涵,也請各位高手指教
1、軟體沒有加殼,用vc++編的;
2、註冊碼放在\winnt\system32\tpflag.rg
檔案中。用softice下斷,
姓名:wzh123
公司: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",將第一組註冊碼的第五
位,即0x34-->eax
: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] 將第一組註冊碼的第三位,即
0x32-->eax
: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+edw-->edi
:00431D88
0FBE5101 movsx edx, byte
ptr [ecx+01] 將第一組註冊碼的第二位,即
0x31-->edx
:00431D8C
0FBE09 movsx ecx,
byte ptr [ecx] 將第一組註冊碼的第一位,即
0x61(a)-->ecx
:00431D8F
8D0457 lea eax,
dword ptr [edi+2*edx] edi+2*edx-->eax,本例中為
3+0x31*2=0x65--->eax
:00431D92
03C1 add
eax, ecx eax+ecw-->eax,本例中為
0x65+0x61=0xc6-->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] 將第四組註冊碼的第一位,即
"d"(0x64)-->eax
:00431D9F 80C241 add
dl, 41 餘數+0x4-5>dl,本例中為
0x10+0x41=0x51("Q")
:00431DA2 81E2FF000000
and edx, 000000FF 取edx低位
:00431DA8 3BC2
cmp eax, edx
比較,相等則繼續,否則over,所以第
四組註冊碼的第一位應該為"Q"
: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
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431DAA(C)
|
:00431DB5
0FBE5302 movsx edx, byte
ptr [ebx+02] ebx="b2345",將第二組註冊碼的第三
位,即"3"(0x33)-->edx
:00431DB9
0FBE4303 movsx eax, byte
ptr [ebx+03] 將第二組註冊碼的第四位,即
"4"(0x34)-->eax
: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] 將第二組註冊碼的第五位,即
"5"(0x35)-->eax
:00431DCD
0FBE4E01 movsx ecx, byte
ptr [esi+01] 將第四組註冊碼的第二位,即
"4"(0x34)-->ecx
: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 餘數+eaw-->eax,本例中為0x34->eax
:00431DDA
0FBE13 movsx edx,
byte ptr [ebx] 將第四組註冊碼的第二位,即
"4"(0x34)-->edx
:00431DDD 03F8
add edi, eax edi+eax,即0x109+0x34=0x13D-->edi
:00431DDF
0FBE4301 movsx eax, byte
ptr [ebx+01] 將第二組註冊碼的第二位,即
"2"(0x32)-->eax
: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
餘數+0x4-5>dl
:00431DF3
81E2FF000000 and edx, 000000FF
:00431DF9
3BCA cmp
ecx, edx 比較,相等則繼續,否則over,所以
第四組註冊碼的第二位應該為"R"
: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
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431DFB(C)
|
:00431E06
0FBE5503 movsx edx, byte
ptr [ebp+03] ebp="c3456",將第三組註冊碼的第四
位,即"5"(0x35)-->edx
: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] 將第三組註冊碼的第六位,即
"7"(0x37)-->edx
:00431E1B
03C2 add
eax, edx eax=0x4FA
:00431E1D
0FBE5500 movsx edx, byte
ptr [ebp+00] 將第三組註冊碼的第一位,即
"c"(0x63)-->edx
:00431E21 03C2
add eax, edx eax=0x55D
:00431E23
99 cdq
:00431E24
F7FF idiv
edi
:00431E26 0FBE5E02
movsx ebx, byte ptr [esi+02] 將第四組註冊碼的第三位,即
"5"(0x35)-->ebx
:00431E2A 80C241 add
dl, 41 餘數+0x41,本例中為0x56(V)-->dl
:00431E2D
81E2FF000000 and edx, 000000FF
:00431E33
3BDA cmp
ebx, edx 比較,相等則繼續,否則over,所以
第四組註冊碼的第三位應該為"V"
: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
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431E35(C)
|
:00431E40
0FBE4501 movsx eax, byte
ptr [ebp+01] 將第三組註冊碼的第二位,即
"3"(0x33)-->eax
:00431E44
0FBE7E03 movsx edi, byte
ptr [esi+03] 將第四組註冊碼的第四位,即
"6"(0x36)-->edi
: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] 將第一組註冊碼的第四位,即
"3"0x33-->edx
:00431E5D
03542418 add edx, dword
ptr [esp+18] 0x33+ss[0012FEC8](見上),
edx=0x66
:00431E61
0FBE4502 movsx eax, byte
ptr [ebp+02] 將第三組註冊碼的第三位,即
"4"(0x34)-->eax
: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,所以
第四組註冊碼的第四位應該為"R"
: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
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00431E80(C)
|
:00431E8B
0FBE06 movsx eax,
byte ptr [esi] 將第四組註冊碼的第一位-->eax,
在這裡,應該用真碼,否則得不到真碼的最後一位,所以這裡取"Q"(0x51)-->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,所
以第四組註冊碼的第五位應該為"T"
:00431EB8 0F94C1
sete cl
相等則條件為真,(爆破點)
:00431EBB 8BC1
mov eax, ecx
:00431EBD
C21000 ret 0010
演算法總結:
註冊碼格式:s1s2s3s4s5-s6s7s8s9s10-s11s12s13s14s15s16-s17s18s19s20s21
前16位任意,後五位由前16位推出。
演算法:
1、s17=((((s5%7)+(s3%5))+s2*2+s1)%0x1A+0x41)&0xff;
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.
註冊碼與姓名,公司無關。
一個有用的註冊碼:a1234-b2345-c34567-QRVRT
相關文章
- CPU Turbo和GPU Turbo的區別 CPU Turbo是什麼意思?2018-08-01GPU
- Affinity Photo2022-01-28
- codeforces Photo of The Sky2018-09-12
- 華為GPU Turbo適配機型名單 GPU Turbo支援哪些手機2018-06-13GPU
- 演算法分析2024-10-09演算法
- 最新Turbo Boost Switcher Pro補丁破解版 Turbo Boost Switcher Pro破解安裝教程2023-09-25
- 榮耀10升級GPU Turbo圖文教程 榮耀10如何升級GPU Turbo?2018-07-06GPU
- 深度學習《Photo Editing》2020-12-10深度學習
- Photo Booth教程|如何在Mac上使用 Photo Booth 拍照或錄製影片?2021-02-01bootMac
- 資訊理論-Turbo碼學習2020-11-19
- AI影像降噪Topaz Photo AI2023-04-21AI
- 修圖高手Affinity Photo Mac2021-11-07Mac
- 【hacker101 CTF】Photo Gallery2021-03-28
- LL(1)分析演算法2024-11-16演算法
- SFR演算法原理分析2024-08-21演算法
- 如何分析排序演算法2022-06-16排序演算法
- 加解密演算法分析2020-06-29解密演算法
- ChatGPT3.5-Turbo:真正的人工智慧2023-03-06ChatGPT人工智慧
- 照片編輯器:cfx photo for Mac2024-01-31Mac
- Photo Image Editor Pixelstyle v3.7.02021-12-02
- 演算法複雜度分析2021-09-19演算法複雜度
- 演算法分析__級數求和2019-03-05演算法
- 演算法分析__時間估算2019-03-05演算法
- 演算法分析__遞推方程2019-03-05演算法
- ETH-Pow演算法分析2019-02-20演算法
- 演算法分析基本概念2018-05-14演算法
- Photo Mechanic Plus 圖片檢視器2022-04-12
- 照片濾鏡軟體:CameraBag Photo mac2022-03-09Mac
- Affinity Photo 專業修圖軟體2022-03-16
- Dijkstra 演算法的手動分析2024-06-11演算法
- 演算法的複雜度分析2022-06-14演算法複雜度
- 演算法設計與分析(fd)2020-12-28演算法
- 演算法複雜度分析(下)2018-09-30演算法複雜度
- 演算法分析__遞迴跟蹤2019-03-05演算法遞迴
- 關聯分析(二)--Apriori演算法2018-12-29演算法
- 演算法複雜度分析(上)2018-09-27演算法複雜度
- 【有點意思】UUID演算法分析2018-03-28UI演算法
- React原始碼分析 - Diff演算法2018-03-08React原始碼演算法
- 排名演算法(二)--淘寶搜尋排序演算法分析2018-12-31演算法排序