Guitar Pro v3.0 的破文-----這一回真的破了 (12千字)
下載:http://211.152.134.220/guitarpp/yu/GuitarPro300.zip
用 dede 找出“確定”按鈕的地址 004CEC8C 用 trw2k 下斷,
輸入註冊資訊,使用者名稱:LANCELOT[CCG]
註冊碼:12345-67890-434343
按確定到這裡
=================================================================================================
004CEC8C 55
push ebp
...... 略 ......
* Reference to control TFLicence.Cle1 : TEdit
|
004CECC5 8B83E4020000 mov
eax, [ebx+$02E4]
* Reference to: controls.TControl.GetText(TControl):System.String;<-------讀取註冊碼的第1段
|
12345
004CECCB E81C74F6FF
call 004360EC
004CECD0 FF75F8
push dword ptr [ebp-$08]
004CECD3 8D55F4 lea
edx, [ebp-$0C]
* Reference to control TFLicence.Cle2 : TEdit
|
004CECD6 8B83EC020000 mov
eax, [ebx+$02EC]
* Reference to: controls.TControl.GetText(TControl):System.String;<-------讀取註冊碼的第2段
|
67890
004CECDC E80B74F6FF
call 004360EC
004CECE1 FF75F4
push dword ptr [ebp-$0C]
004CECE4 8D55F0 lea
edx, [ebp-$10]
* Reference to control TFLicence.Cle3 : TEdit
|
004CECE7 8B83F4020000 mov
eax, [ebx+$02F4]
* Reference to: controls.TControl.GetText(TControl):System.String;<-------讀取註冊碼的第3段
|
43434
004CECED E8FA73F6FF
call 004360EC
004CECF2 FF75F0
push dword ptr [ebp-$10]
004CECF5 8D45FC lea
eax, [ebp-$04]
004CECF8 BA03000000
mov edx, $00000003
* Reference to: system.@LStrCatN;<----------------------------------------連線在一起
|
123456789043434
004CECFD E8DA52F3FF
call 00403FDC
004CED02 8B45FC
mov eax, [ebp-$04]
004CED05 50
push eax
004CED06 8D55F8
lea edx, [ebp-$08]
* Reference
to control TFLicence.Nom : TLabel
|
004CED09 8B83CC020000
mov eax, [ebx+$02CC]
* Reference
to: controls.TControl.GetText(TControl):System.String;<--------讀取使用者名稱
|
004CED0F E8D873F6FF call
004360EC
004CED14 8B45F8
mov eax, [ebp-$08]
004CED17 B92C010000
mov ecx, $0000012C
004CED1C
5A pop
edx
|
004CED1D E8EECC0800
call 0055BA10<-------------------------核心計算,跟進去
004CED22 84C0
test al, al
004CED24 0F8460010000
jz 004CEE8A
===============================================================================================
0055BA10 55
push ebp
...... 略 ......
* Reference to: system.@LStrLen:Integer;
| or: system.@DynArrayLength;
|
or: system.DynArraySize(Pointer):Integer;
|
0055BA69
E8AE84EAFF call 00403F1C
0055BA6E 8BF0
mov esi, eax
0055BA70 85F6
test esi, esi
0055BA72
7E21 jle
0055BA95
0055BA74 B901000000
mov ecx, $00000001
0055BA79 8B45FC
mov eax, [ebp-$04]
0055BA7C
0FB64408FF movzx eax, byte ptr
[eax+ecx-$01]<-------使用者名稱的第一個字 L==0x4c
0055BA81 F7E9
imul ecx<-------------------------------乘上序號
0055BA83 03F8
add edi, eax<--------------------------和加上edi中的值
0055BA85
8BC7 mov
eax, edi
0055BA87 BFE8030000
mov edi, $000003E8
0055BA8C 99
cdq
0055BA8D F7FF
idiv edi<-------------------------------和除去
0x3e8
0055BA8F 8BFA
mov edi, edx<--------------------------餘數放到edi
0055BA91 41
inc ecx
0055BA92 4E
dec esi
0055BA93
75E4 jnz
0055BA79<--------------------------迴圈計算,使用者名稱的13個字母
0055BA95 85FF
test edi,
edi
0055BA97 7505
jnz 0055BA9E
0055BA99 BF01000000
mov edi, $00000001
0055BA9E 8B45F4
mov eax, [ebp-$0C]<---------------------0x12c
0055BAA1 2DDC000000 sub
eax, $000000DC<---------------------0x12c-0xdc==0x50
0055BAA6
03C7 add
eax, edi<---------------------------0x50+0x15==0x65
0055BAA8 40
inc
eax<--------------------------------0x65+0x1==0x66
0055BAA9 B9E8030000
mov ecx, $000003E8
0055BAAE
99 cdq
0055BAAF F7F9
idiv ecx
0055BAB1 8BFA
mov edi, edx<--------------------------
0x66
0055BAB3 8D45F0
lea eax, [ebp-$10]
0055BAB6 8B55F8
mov edx, [ebp-$08]
0055BAB9 8A520A mov
dl, byte ptr [edx+$0A]<--------------註冊碼的第11位
* Reference
to: system.@LStrFromChar(String;Char);
|
or: system.@LStrFromWChar(String;WideChar);
|
or: system.@WStrFromChar(WideString;Char);
|
or: system.@WStrFromWChar(WideString;WideChar);
|
0055BABC
E88383EAFF call 00403E44
0055BAC1 8B45F0
mov eax, [ebp-$10]
0055BAC4 50
push eax
0055BAC5
8D45EC lea
eax, [ebp-$14]
0055BAC8 8B55F8
mov edx, [ebp-$08]
0055BACB 8A12
mov dl, byte ptr
[edx]<--------------註冊碼的第1位
* Reference to: system.@LStrFromChar(String;Char);
| or: system.@LStrFromWChar(String;WideChar);
| or: system.@WStrFromChar(WideString;Char);
| or: system.@WStrFromWChar(WideString;WideChar);
|
0055BACD E87283EAFF
call 00403E44
0055BAD2 8B45EC
mov eax, [ebp-$14]
* Reference
to: sysutils.StrToInt(System.AnsiString):System.Integer;
|
0055BAD5
E8CAD4EAFF call 00408FA4
0055BADA 8BF0
mov esi, eax
0055BADC 8D45EC
lea eax, [ebp-$14]
0055BADF
8B55F8 mov
edx, [ebp-$08]
0055BAE2 8A5201
mov dl, byte ptr [edx+$01]<--------------註冊碼的第2位
* Reference to: system.@LStrFromChar(String;Char);
|
or: system.@LStrFromWChar(String;WideChar);
|
or: system.@WStrFromChar(WideString;Char);
|
or: system.@WStrFromWChar(WideString;WideChar);
|
0055BAE5 E85A83EAFF call
00403E44
0055BAEA 8B45EC
mov eax, [ebp-$14]
* Reference to: sysutils.StrToInt(System.AnsiString):System.Integer;
|
0055BAED E8B2D4EAFF
call 00408FA4
0055BAF2 03F0
add esi, eax<--------------註冊碼的第1,2位之和
0055BAF4 8BC6
mov eax, esi
0055BAF6 F7EF
imul edi<-------------------乘上0x66
0055BAF8 B90A000000 mov
ecx, $0000000A<--------除與 0xa
0055BAFD 99
cdq
0055BAFE F7F9
idiv ecx
0055BB00 8BC2
mov eax, edx<-------------餘數放在eax
0055BB02 8D55EC
lea edx, [ebp-$14]
* Reference to: sysutils.IntToStr(System.Integer):System.AnsiString;overload;
|
0055BB05 E836D4EAFF
call 00408F40
0055BB0A 8B55EC
mov edx, [ebp-$14]
0055BB0D
58 pop
eax
* Reference to: system.@LStrCmp;<-------------------------------餘數在與註冊碼的第10位比較
|
0055BB0E E81985EAFF
call 0040402C
0055BB13 0F8596010000
jnz 0055BCAF<-------------不相等就完蛋了下面迴圈計算略
=================================================================================================
總結一下:
1) 使用者名稱:LANCELOT[CCG]==>0x4c,0x41,0x4e,0x43,0x45,0x4c,0x4f,0x54,0x5b,0x43,0x43,0x47,0x5d
2) (0x4c*0x1+0x0 ) % 0x3e8==0x4c
(0x41*0x2+0x4c ) % 0x3e8==0xce
(0x4e*0x3+0xce ) % 0x3e8==0x1b8
(0x43*0x4+0x1b8) % 0x3e8==0x2c4
(0x45*0x5+0x2c4) % 0x3e8==0x35
(0x4c*0x6+0x35 ) % 0x3e8==0x1fd
(0x4f*0x7+0x1fd) % 0x3e8==0x3e
(0x54*0x8+0x3e ) % 0x3e8==0x2de
(0x5b*0x9+0x2de) % 0x3e8==0x229
(0x43*0xa+0x229) % 0x3e8==0xdf
(0x43*0xb+0xdf ) % 0x3e8==0x3c0
(0x47*0xc+0x3c0) % 0x3e8==0x32c
(0x5d*0xd+0x32c) % 0x3e8==0x15<-------這個值如果為0,就用1代入
3) (0x12c-0xdc+0x15+0x1)
% 0x3e8==0x66
4) 註冊碼:123456789043434
5) ((0x1+0x2)*0x66) % 0xa==0x6<----------註冊碼的第11位
((0x3+0x4)*0x66) % 0xa==0x4<----------註冊碼的第12位
((0x5+0x6)*0x66)
% 0xa==0x2<----------註冊碼的第13位
((0x7+0x8)*0x66) % 0xa==0x0<----------註冊碼的第14位
((0x9+0x0)*0x66) % 0xa==0x8<----------註冊碼的第15位
所以:
使用者名稱:LANCELOT[CCG] 註冊碼: 12345-67890-64208<--------完了嗎,還沒有
==========================================================================================
用這個註冊碼會有NAG,recently open file 無法顯示,主介面上有錯誤提示,也就是說這冊碼的前10位不是任意的。
估計程式將註冊碼的前10位,換算後當作給主介面和NAG視窗的Message......
修改了幾次註冊碼後得知:註冊碼的第10位如果為0,主介面上有錯誤提示,
不為0則主介面一閃就消失了,註冊碼第9位卻可以任意。
於是就輸入 使用者名稱: LANCELOT[CCG] 註冊碼:12345-67818-64208
這一次一進入主畫面,馬上就退出。
其後跟蹤多日無果......
今天突然想到,程式要退出,應該會呼叫 PostQuitMessage 的API,於是下中斷 bpx postquitmessage
用
W32Dasm + trw2k 不斷的找啊找啊,在 :00566549 mov eax,dword ptr [ebp-08] 的地方,
習慣性的下
d *(ebp-08),看到了什麼,“12345678”
==============================================================================================
:00566535 8BC6
mov eax, esi<------------0x12c
:00566537 2DDC000000
sub eax, 000000DC<-------0x12c-0xdc==0x50
:0056653C 03C7
add eax, edi<------------0x50+0x15==0x65
:0056653E 40
inc eax<-----------------0x65+1==0x66
:0056653F B9E8030000
mov ecx, 000003E8
:00566544 99
cdq
:00566545 F7F9
idiv ecx
:00566547 8BFA
mov edi, edx<------------0x66
:00566549 8B45F8
mov eax, dword ptr [ebp-08]<------12345678 似曾相識哦
:0056654C E8532AEAFF
call 00408FA4<--------------------轉換成16進位制
:00566551 8945B8
mov dword ptr [ebp-48], eax<------0xbc614e
:00566554 DB45B8
fild dword ptr [ebp-48]
:00566557 897DB4
mov dword ptr [ebp-4C], edi<------0x66
:0056655A DB45B4
fild dword ptr [ebp-4C]
:0056655D
DEF9 fdivp
st(1), st(0)<---------------0xbc614e/0x66==0x1d8cc
:0056655F E8F8C5E9FF
call 00402B5C
:00566564 8BD8
mov ebx, eax
:00566566 81FBA0860100 cmp ebx, 000186A0<----------------要大於或等於0x186a0
:0056656C 7C23
jl 00566591
:0056656E 8B45F8
mov eax, dword ptr [ebp-08]<------
:00566571 E82E2AEAFF
call 00408FA4
|
:00566576 8945B8
mov dword ptr [ebp-48], eax
| 這一段的意思是
:00566579 DB45B8
fild dword ptr [ebp-48]
| 註冊碼的前8位
:0056657C 897DB4
mov dword ptr [ebp-4C], edi
| 轉換成16進位制後的
:0056657F DB45B4
fild dword ptr [ebp-4C]
| 數要能被0x66整除
:00566582 DEF9
fdivp st(1), st(0)
|<--至於0x66重何而來
:00566584 895DB0
mov dword ptr [ebp-50], ebx
| 請看上面的第一次總結
:00566587 DB45B0
fild dword ptr [ebp-50]
|
:0056658A DED9
fcompp
|
:0056658C DFE0
fstsw ax
|
:0056658E
9E
sahf
|
:0056658F 740A
je 0056659B<-----------------------
===============================================================================================
再總結一下:(這個人怎麼這麼喜歡總結)
假設:註冊碼的前8位轉換成16進位制後的值為 x 則 x/0x66 要能整除,其商要不小於 0x186a0
偷懶一下 0x186a0*0x66==0x9ba3c0==10200000
於是使用者名稱:LANCELOT[CCG]
註冊碼:102000001824008
搞定,好累啊,用了整整4個晚上,走了不少彎路。
Crack by lancelot[CCG][FCG] 2001.09.14
相關文章
- Guitar Pro v3.0 的破文 (11千字)2001-09-08GUI
- 用DeDe破解------Ativa Pro v3.18 的破文 (8千字)2001-08-29
- 講解Guitar Pro如何編輯琵音2020-11-26GUI
- 脫殼IglooFTP PRO v3.0的詳細過程 (11千字)2001-09-14FTP
- 請破破這個軟體 (129字)2000-06-25
- 我的第2篇破文 高手莫入!! (3千字)2001-11-11
- 分析Guitar Pro 7如何實現切音效果2020-11-09GUI
- 《AceReader V4.5》破文+序號產生器原始碼 (12千字)2015-11-15原始碼
- 破文三,高手莫入,非常簡單 (2千字)2001-08-01
- 幻影2003 V3.0註冊碼分析
(12千字)2003-01-25
- 菜弟破文之二(速存QuickSave) (3千字)2001-09-21UI
- Advanced
PDF Password Recovery Pro 2.12的不完美破解 (12千字)2003-05-20
- Outlook Express Backup v3.0 (9千字)2001-09-26Express
- iPhone Pro是真的嗎?別被這張以假亂真的諜照騙了2016-07-21iPhone
- WindowBlinds v3.0 enhanced 破解 (17千字)2002-02-28
- 一個遊戲的破解,SolSuite 2002。破文處女篇 (3千字)2002-03-26遊戲UI
- 這個大模型,真的治好了我的論文閱讀障礙2024-08-12大模型
- Android的壟斷真的牢不可破麼?2015-10-20Android
- image optimizer v3.0之暴力破解 (6千字)2000-10-12
- VoxPhone Pro V3.0 Build 36所用的Rsagnt32.dll2015-11-15UI
- The Works 全攻略-破文第二篇(初學者適用) (3千字)2015-11-15
- 無名小兵V1.45
VB5 PCODE的破文一篇 (16千字)2002-07-06
- 破文一篇:易經八卦占卜程式7.0的破解(高手莫入) (8千字)2001-08-31
- 我的第一篇破文easyoffice 2001 高手莫入!! (1千字)2001-11-04
- 我的第3篇破文 cr--CJSFormater 高手請指導、指導!! (4千字)2001-11-24JSORM
- 你真的需要新款MacBook Pro嗎?2021-12-29Mac
- 這種反爬蟲手段有點意思,看我破了它!2019-11-14爬蟲
- Airbnb正在失去初心,大資料識破了這一點2016-10-10AI大資料
- 某國產彩票V3.0軟體的演算法分析
(22千字)2015-11-15演算法
- 我的第一篇破文,獻給看學學院的!^_^高手免進! (10千字)2015-11-15
- MAU、年營收領跑全球,這款國產手遊打破了出海的套路2021-02-03營收
- 網路螞蟻 [netant]1.25去廣告的兩種方法 破文一篇 (1千字)2002-06-22
- 我的第一篇破文,獻給看學學院! 高手免進! (2千字)2002-06-29
- WinRAR v3.0 Beta 4 破解^程-我是@悠 (3千字)2002-03-07
- 打字高手V3.0前兩天有人問 (4千字)2000-08-05
- 敲了這麼多年程式碼,這樣的登入方式還真是頭一回見2020-07-07
- 破解HomeWatcher v1.2 第一回合 (3千字)2000-03-04
- Screen Demo Maker
V3.0註冊演算法分析 (8千字)2002-09-10演算法