E族百變桌面6.0註冊演算法分析
標 題:E族百變桌面6.0註冊演算法分析
發信人:txm123
時 間:2003/07/18 00:15am
詳細資訊:
E族百變桌面6.0註冊演算法分析
軟體名稱:
E族百變桌面6.0
軟體簡介:
e族百變桌面 6.0
軟體大小:1386KB
軟體語言:簡體中文
軟體類別:國產軟體/共享版/佈景保護
執行環境:Win9x/Me/NT/2000/XP
加入時間:2003-6-30 16:56:23
下載次數:642
軟體評級:
聯 系 人:未知
開 發 商:Home Page
軟體介紹:
提供25種變換桌面的方式,讓您的桌面煥然一新。操作簡單,無需費力學習。支援多種Internet流行圖片格式。將桌布檔案打包,方便存
儲、轉發。將桌布包展開,還原圖片檔案。e族網真情奉獻,免費下載,免費使用。e族百變桌面,桌面從此精彩!
下載地址:
http://www.onlinedown.net/index.htm
------------------------------------------------------------
破解作者:
yzez[DFCG]
破解工具:
DeDE3.5、Ollydbg1.09
破解目的:
初次學破解,交流經驗。研究註冊演算法,提高水平。
------------------------------------------------------------
[破解過程]
詳細過程:
1、用FI檢查是Delphi程式,所以用DeDE3.5反彙編,選過程,在出現的視窗中選擇frmbuy--bnNextClick,找到關鍵點:
004CCA4A E8CDC2F3FF
call 00408D1C
004CCA4F 8945F0
mov [ebp-$10], eax
004CCA52 8955F4
mov [ebp-$0C], edx
004CCA55 8B45FC
mov eax, [ebp-$04]
004CCA58 FFB0C4030000 push
dword ptr [eax+$03C4]
004CCA5E FFB0C0030000 push
dword ptr [eax+$03C0]
004CCA64 FF75F4
push dword ptr [ebp-$0C]
004CCA67 FF75F0
push dword ptr [ebp-$10]
004CCA6A B001
mov al, $01
|
004CCA6C E85FF3FFFF call
004CBDD0---------這是我們要找的關鍵CALL,這一步我不想詳細介紹,這篇破文主要研究演算法。
2、退出DeDE3.5,用Ollydbg除錯:
004CCA6A . B0 01 MOV
AL, 1
004CCA6C . E8 5FF3FFFF CALL EPAPER.004CBDD0---------------------------在此按F2鍵設斷,按F9執行程式,填入註冊資訊後,
點確定,被斷,按F7跟進這個CALL
004CCA71 . 8B15 90AF4D00 MOV EDX, DWORD PTR DS:[4DAF90]
; EPAPER.004DCD94
004CCA77 . 8802 MOV
BYTE PTR DS:[EDX], AL
004CCA79 . A1 90AF4D00 MOV EAX, DWORD PTR
DS:[4DAF90]
004CCA7E . 8038 00 CMP BYTE
PTR DS:[EAX], 0
004CCA81 . 74 4C JE
SHORT EPAPER.004CCACF
004CCA83 . 8B45 FC MOV EAX,
DWORD PTR SS:[EBP-4]
004CCA86 . C780 CC030000>MOV DWORD PTR DS:[EAX+3CC],
4
004CCA90 . FF75 F4 PUSH DWORD
PTR SS:[EBP-C] ; /Arg2 = 00000000
004CCA93 . FF75 F0 PUSH DWORD
PTR SS:[EBP-10] ; |Arg1 = 499602D2
004CCA96 . 8D45 C0 LEA EAX,
DWORD PTR SS:[EBP-40] ; |
004CCA99 . E8 BAC1F3FF CALL EPAPER.00408C58
; \EPAPER.00408C58
004CCA9E . 8B55 C0 MOV EDX,
DWORD PTR SS:[EBP-40]
004CCAA1 . 8B45 FC MOV EAX,
DWORD PTR SS:[EBP-4]
004CCAA4 . 8B80 44030000 MOV EAX, DWORD PTR DS:[EAX+344]
004CCAAA . E8 25F3F8FF CALL EPAPER.0045BDD4
--------------------追進004CCA6C . E8 5FF3FFFF CALL
EPAPER.004CBDD0我們來到這裡:
004CBDD0 /$ 55 PUSH
EBP----------------------停在這一行
004CBDD1 |. 8BEC MOV
EBP, ESP
004CBDD3 |. 83C4 F8 ADD ESP,
-8
004CBDD6 |. 53 PUSH
EBX
004CBDD7 |. 56 PUSH
ESI
; ePaper.0049F0E8
004CBDD8 |. 33D2 XOR
EDX, EDX
004CBDDA |. 8955 F8 MOV [LOCAL.2],
EDX
004CBDDD |. 8845 FF MOV BYTE
PTR SS:[EBP-1], AL
004CBDE0 |. 33C0 XOR
EAX, EAX
004CBDE2 |. 55 PUSH
EBP
004CBDE3 |. 68 67BE4C00 PUSH ePaper.004CBE67
004CBDE8 |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004CBDEB |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004CBDEE |. 33DB XOR
EBX, EBX
004CBDF0 |. FF75 14 PUSH [ARG.4]
; ePaper.0049F0CF
004CBDF3 |. FF75 10 PUSH [ARG.3]
004CBDF6 |. E8 B1000000 CALL ePaper.004CBEAC------按F7再追進這個CALL.為什麼?看看下面的程式碼,這是很經典的比較語句
004CBDFB |. 3B55 0C CMP EDX,
[ARG.2]
; ePaper.0049F10B
004CBDFE |. 75 07 JNZ
SHORT ePaper.004CBE07
004CBE00 |. 3B45 08 CMP EAX,
[ARG.1]
004CBE03 |. 75 02 JNZ
SHORT ePaper.004CBE07
004CBE05 |. B3 01 MOV
BL, 1
004CBE07 |> 807D FF 00 CMP BYTE
PTR SS:[EBP-1], 0
004CBE0B |. 74 44 JE
SHORT ePaper.004CBE51
-----------------追進004CBDF6 |. E8 B1000000 CALL
ePaper.004CBEAC,我們又會來到這裡:
004CBEA4 . 52 65 67 43 6>ASCII "RegCode",0DD註冊碼,可見我們找到了地方
004CBEAC /$ 55 PUSH
EBP---------停在這一行
004CBEAD |. 8BEC MOV
EBP, ESP
004CBEAF |. 83C4 E0 ADD ESP,
-20
004CBEB2 |. 53 PUSH
EBX
004CBEB3 |. 56 PUSH
ESI
; ePaper.0049F0E8
004CBEB4 |. 33C0 XOR
EAX, EAX
004CBEB6 |. 8945 E0 MOV [LOCAL.8],
EAX
004CBEB9 |. 8945 EC MOV [LOCAL.5],
EAX
004CBEBC |. 8945 E8 MOV [LOCAL.6],
EAX
004CBEBF |. 8945 E4 MOV [LOCAL.7],
EAX
004CBEC2 |. 33C0 XOR
EAX, EAX
004CBEC4 |. 55 PUSH
EBP
004CBEC5 |. 68 D9BF4C00 PUSH ePaper.004CBFD9
004CBECA |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004CBECD |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004CBED0 |. FF75 0C PUSH [ARG.2]
; /Arg2 = 00000000
004CBED3 |. FF75 08 PUSH [ARG.1]
; |Arg1 = 499602D2
004CBED6 |. 8D45 EC LEA EAX,
[LOCAL.5] ;
|
004CBED9 |. E8 7ACDF3FF CALL ePaper.00408C58
; \ePaper.00408C58
004CBEDE |. 8B45 08 MOV EAX,
[ARG.1]-DDDDD把機器碼的十六進位制值賦給EAX
004CBEE1 |. 8945 F0 MOV [LOCAL.4],
EAX
004CBEE4 |. 8B45 0C MOV EAX,
[ARG.2]
004CBEE7 |. 8945 F4 MOV [LOCAL.3],
EAX
004CBEEA |. 8B45 EC MOV EAX,
[LOCAL.5]
004CBEED |. E8 F288F3FF CALL ePaper.004047E4
004CBEF2 |. 8BD8 MOV
EBX, EAX
004CBEF4 |. 85DB TEST
EBX, EBX
004CBEF6 |. 7E 56 JLE
SHORT ePaper.004CBF4E
004CBEF8 |. BE 01000000 MOV ESI, 1
004CBEFD |> 8D45 E0 /LEA
EAX, [LOCAL.8]--從這裡開始是一個迴圈,一共迴圈10次,因為機器碼是:10位
004CBF00 |. 8B55 EC |MOV EDX,
[LOCAL.5]-----賦EDX為0
004CBF03 |. 8A5432 FF |MOV DL, BYTE
PTR DS:[EDX+ESI-1]
004CBF07 |. E8 0088F3FF |CALL ePaper.0040470C
004CBF0C |. 8B45 E0 |MOV EAX,
[LOCAL.8]
004CBF0F |. E8 08E5F3FF |CALL ePaper.0040A41C
004CBF14 |. DB2D F0BF4C00 |FLD TBYTE PTR DS:[4CBFF0]----------------裝入實數:4CBFF0的值是:3.1415926535897932380
004CBF1A |. DEC9 |FMULP
ST(1), ST--------------ST(1)*ST送入ST,然後出棧,ST是3.1415926535897932380,ST(1)是機器碼按
位取數,如第一次迴圈,取第一位是:3,所以執行運算後其結果是:3.1415926535897932380*3.0000000000000000000=9.4247779607693793480
004CBF1C |. E8 4F6CF3FF |CALL ePaper.00402B70----------這個CALL幹什麼用?
--------------下面是004CBF1C |. E8 4F6CF3FF |CALL ePaper.00402B70這個CALL的程式碼
00402B70 /$ 83EC 08
SUB ESP, 8
00402B73 |. DF3C24 FISTP QWORD
PTR SS:[ESP]--------將ST以整數形式儲存,注意四捨五入,如:9.4247779607693793480保留
整數是9。
00402B76 |. 9B WAIT
00402B77 |. 58 POP
EAX
; ePaper.00404719
00402B78 |. 5A POP
EDX
; ePaper.00404719
------------------------------------------------------------------DDDDDDDDDD
004CBF21 |. 3345 F0 |XOR EAX,
[LOCAL.4] ; ePaper.0049F0E8----------------第一次迴圈是把機器碼的十六進位制值與EAX
異或送入EAX,EAX是多少?就是上面浮點運算取得的整數值(轉為十六進位制).如:第一次迴圈就是:E62C6708 XOR
9=E62C6701
(E62C6708是我的機器碼3861669640的十六進位制值)
004CBF24 |. 3355 F4 |XOR EDX,
[LOCAL.3]----------------------EDX清零
004CBF27 |. 81F0 A09EF21B |XOR EAX, 1BF29EA0---------------------E62C6701 XOR 1BF29EA0=FDDEF9A1
004CBF2D |. 81F2 00000000 |XOR EDX, 0
004CBF33 |. 85D2 |TEST
EDX, EDX
004CBF35 |. 7D 07 |JGE
SHORT ePaper.004CBF3E--大於等於轉移
004CBF37 |. F7D8 |NEG
EAX
004CBF39 |. 83D2 00 |ADC EDX,
0-------------帶進位+0
004CBF3C |. F7DA |NEG
EDX
004CBF3E |> 0345 F0 |ADD
EAX, [LOCAL.4] ; ePaper.0049F0E8--------FDDEF9A1+E62C6708=E40B60A9
004CBF41 |. 1355 F4 |ADC EDX,
[LOCAL.3]--帶進位加:EDX+EDX=1+0=1賦給Arg2
004CBF44 |. 8945 F0 |MOV [LOCAL.4],
EAX--E40B60A9替換E62C6708賦值給Arg1
004CBF47 |. 8955 F4 |MOV [LOCAL.3],
EDX
004CBF4A |. 46 |INC
ESI ; ePaper.0049F0E8------調整
004CBF4B |. 4B |DEC
EBX---------------------------EBX減一,
004CBF4C |.^ 75 AF \JNZ SHORT
ePaper.004CBEFD--完了嗎?沒完繼續.跳回前面重新來過!
004CBF4E |> FF75 F4 PUSH [LOCAL.3]
; /Arg2 = 000003F7
004CBF51 |. FF75 F0 PUSH [LOCAL.4]
; |Arg1 = 1C02DF42這是十次迴圈計算後的Arg1和Arg2的值
004CBF54 |. 8D45 E8 LEA EAX,
[LOCAL.6] ;
|
004CBF57 |. E8 FCCCF3FF CALL ePaper.00408C58
; \ePaper.00408C58----------------此CALL把上述運算得到的Arg1、Arg2連線
起來,就是;3F71C02DF42,再轉化為十進位制值是:4359861755714
004CBF5C |. 8B45 E8 MOV EAX,
[LOCAL.6] ;
ePaper.004CBE67
004CBF5F |. E8 8088F3FF CALL ePaper.004047E4
004CBF64 |. 8BD8 MOV
EBX, EAX----------------------取位數,EAX是0D(即13),上面轉化的數值就是十三位數
004CBF66 |. 8B45 EC MOV EAX,
[LOCAL.5]
004CBF69 |. E8 7688F3FF CALL ePaper.004047E4
004CBF6E |. 3BD8 CMP
EBX, EAX----------------------比較位數:EAX為0A(10),EBX為0D(13)
004CBF70 |. 7D 08 JGE
SHORT ePaper.004CBF7A---------大於等於轉移
004CBF72 |. 8B45 E8 MOV EAX,
[LOCAL.6] ;
ePaper.004CBE67
004CBF75 |. E8 DA91F6FF CALL ePaper.00435154
004CBF7A |> 8B45 E8 MOV
EAX, [LOCAL.6] ----------------轉移到此 ,賦註冊碼位數為0A即10位
004CBF7D |. E8 6288F3FF CALL ePaper.004047E4
004CBF82 |. 8BD8 MOV
EBX, EAX
004CBF84 |. 8B45 EC MOV EAX,
[LOCAL.5]
004CBF87 |. E8 5888F3FF CALL ePaper.004047E4
004CBF8C |. 2BD8 SUB
EBX, EAX----------------------這裡調整位數:EBX=0D-0A
004CBF8E |. 43 INC
EBX---------------------------EBX+1
004CBF8F |> 8D45 E4 /LEA
EAX, [LOCAL.7]
004CBF92 |. 50 |PUSH
EAX
004CBF93 |. 8B45 EC |MOV EAX,
[LOCAL.5]
004CBF96 |. E8 4988F3FF |CALL ePaper.004047E4
004CBF9B |. 8BC8 |MOV
ECX, EAX
004CBF9D |. 8BD3 |MOV
EDX, EBX
004CBF9F |. 8B45 E8 |MOV EAX,
[LOCAL.6] ; ePaper.004CBE67-------------註冊碼只取十位
004CBFA2 |. E8 9D8AF3FF |CALL ePaper.00404A44
004CBFA7 |. 4B |DEC
EBX---------------------------------------------EBX減一就是3
004CBFA8 |. 8B45 E4 |MOV EAX,
[LOCAL.7]------把4359861755714去掉前三位:9861755714賦給EAX這就是我們所需要的註冊碼!
004CBFAB |. 8038 30 |CMP BYTE
PTR DS:[EAX], 30
004CBFAE |.^ 74 DF \JE SHORT
ePaper.004CBF8F
004CBFB0 |. 8B45 E4 MOV EAX,
[LOCAL.7]
004CBFB3 |. E8 64CDF3FF CALL ePaper.00408D1C
004CBFB8 |. 8945 F8 MOV [LOCAL.2],
EAX
004CBFBB |. 8955 FC MOV [LOCAL.1],
EDX
004CBFBE |. 33C0 XOR
EAX, EAX
004CBFC0 |. 5A POP
EDX
; 0012F7B0
004CBFC1 |. 59 POP
ECX
; 0012F7B0
004CBFC2 |. 59 POP
ECX
; 0012F7B0
004CBFC3 |. 64:8910 MOV DWORD
PTR FS:[EAX], EDX
004CBFC6 |. 68 E0BF4C00 PUSH ePaper.004CBFE0
004CBFCB |> 8D45 E0 LEA
EAX, [LOCAL.8]
004CBFCE |. BA 04000000 MOV EDX, 4
004CBFD3 |. E8 7085F3FF CALL ePaper.00404548
004CBFD8 \. C3 RETN
--------------------------------------------------------------------------------------
演算法小結:這是根據軟體隨機產生的十位機器碼進行計算,得出正確的註冊碼。計算分兩步:
1、機器碼經過按位運算產生Arg1和Arg2兩組值。Arg1的運算是這樣:首先按位取值,取出註冊碼的一位值乘3.1415926535897932380,把結果
取整數(注意四捨五入)賦給EAX,然後機器碼的十六進位制值異或EAX,結果存EAX(注意這是第一次迴圈),然後再與常數:1BF29EA0相異或,結果
加上機器碼的十六進位制值,完成第一次迴圈,把這一運算結果儲存,進行第二次迴圈。語言太差,總覺得說不清楚,下面舉例說明:
第一次迴圈:Arg1(1)我假定為Arg1(1),Arg1(1)=機器碼 XOR 3.1415926535897932380*3.0000000000000000000的整數值的十六進位制(9)
XOR
1BF29EA0+機器碼= FDDEF9A1+ E62C6708=E40B60A9
第二次迴圈:Arg1(2)= Arg1(1) XOR 3.1415926535897932380*8.0000000000000000000的整數值的十六進位制(19)
XOR 1BF29EA0+ Arg1(1)=
E4055EB9
。。。。。。。。。。。。。。。。。。。下述相類似省略
第十次迴圈:Arg1(10)= Arg1(9) XOR 3.1415926535897932380*0.0000000000000000000的整數值的十六進位制(0)
XOR 1BF29EA0+ Arg1(9)=
1C02DF42,這就是:Arg1的最後結果。
Arg2的運算:Arg2=(位數-1)+1+(位數-1)(這也是第一次的迴圈),後面的迴圈: Arg2(n)= Arg2(n-1)+1+
Arg2(n-1),如第一次迴圈:
Arg2(1)=0(1-1)+1+0(1-1)=1;
Arg2(2)=1+1+1=3。。。。。。。。。以下省略
Arg2(10)=1FB+1+1FB=3F7,這是Arg2的值。
2、這是第二步運算,把Arg1和Arg2連線起來,構成一個十六進位制值,即Arg2Arg1=3F71C02DF42,轉化為十進位制值是:4359861755714,註冊碼是
10位,把前面3位去掉,就是真正的註冊碼,如我的註冊碼是:9861755714。
相關文章
- E族百變桌面7.2註冊流程分析2015-11-15
- 完美解除安裝6.0註冊演算法分析 (2千字)2002-02-27演算法
- supercleaner註冊演算法分析2015-11-15演算法
- SpeedFlash註冊演算法分析(VB)2015-11-15演算法
- 財智老闆通3.04註冊版---註冊演算法分析2003-03-16演算法
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- Screen Demo Maker 3.0 註冊演算法分析2003-07-15演算法
- <<Anti-Hack>> 2.0註冊演算法分析2003-06-06演算法
- Personal Antispy 1.14 註冊演算法分析2015-11-15演算法
- 冰盾濾鏡註冊演算法分析2015-11-15演算法
- DLL Show V4.4 註冊演算法分析2015-11-15演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- FolderView 1.7
註冊演算法分析 (14千字)2015-11-15View演算法
- ffmpeg分析系列之一(註冊該註冊的)2010-11-04
- LanSee 註冊演算法2015-11-15演算法
- 新狐傳真群發2.0註冊演算法分析2003-06-29演算法
- 網路精確時鐘 2.25註冊演算法分析2003-07-30演算法
- 重新貼過註冊演算法分析 (16千字)2001-10-23演算法
- 長沙vod點歌系統(註冊演算法分析)2015-11-15演算法
- Netscan pro 3.3 註冊演算法分析全過程2015-11-15演算法
- CCproxy6.0的演算法分析2004-07-10演算法
- 公務員之路3.0註冊分析2015-11-15
- 東晨庫管網路版 6.5註冊演算法分析2003-08-14演算法
- EffeTech HTTP Sniffer 3.2註冊演算法分析 (5千字)2002-06-24HTTP演算法
- Green Tea 2.60註冊碼演算法分析 (3千字)2000-07-17演算法
- VB控制元件21Hex DockIt註冊演算法分析2015-11-15控制元件演算法
- [原創]Focus
Magic V3.01 註冊演算法分析2015-11-15演算法
- 海嘯錄音機Ver2.1註冊演算法分析2015-11-15演算法
- XPSecurity2005c註冊演算法分析---標準DES+變形MD52015-11-15演算法
- 財智家庭理財V3.30註冊演算法分析2003-08-19演算法
- SuperCleaner 2.31註冊碼演算法分析 - OCG (13千字)2002-04-02演算法
- Registry Crawler 4.0註冊碼演算法分析 - OCG
(20千字)2002-04-07演算法
- UltraEdit-32
10註冊碼演算法分析 (19千字)2003-05-17演算法
- AZR註冊流程分析及疑問(BlowFish演算法) (699字)2001-11-03演算法
- Directory Scanner v1.5 註冊演算法分析 (6千字)2015-11-15演算法
- 海月圖片獵手(SeaMoon Pic Hunter) 1.52 註冊演算法分析2015-11-15演算法
- MouseStar V3.01註冊演算法分析 (18千字)2015-11-15演算法
- **********.exe註冊碼演算法分析--高手莫笑 (31千字)2015-11-15演算法