簡單演算法:迷你網路電視演算法分析 (8千字)
【軟體名稱】:迷你網路電視 v5.3
【下載地址】:http://www.web-checker.com/gb/tvsetup.exe
【軟體大小】:1.04MB
【軟體簡介】:迷你網路電視內含155個影片頻道和140個廣播頻道.包括許多精彩的國外影影片道和新聞頻道,能讓您的電腦成為具備電視機和收音機的所有功能. 未註冊使用者可以收看35個電影片道和40個電臺廣播。
【軟體限制】:使用限制
【破解作者】:仙劍太郎
【作者宣告】:破解只為學習和興趣,無其它目的。第一次寫演算法的文章哦,失誤之處還請諸位大俠賜教!
【破解工具】:FileInfo 3.01,W32dasm 9.0,OllyDbg 1.09C 漢化版
======================================================
【分析過程】:
簡單演算法:迷你網路電視演算法分析
執行迷你網路電視,點選註冊,顯示我的機器碼是38068421,HEX即為244E0C5,隨便輸入註冊碼,這裡輸入123456789,HEX為75BCD15作為假註冊碼.
用w32dasm的串式字元參考,找到"迷你網路電視-註冊版",然後向上看,00402274是關鍵跳轉(若在這裡暴破,執行時顯示是註冊版,但電視臺的選單依然不可用,所以另想辦法),用OllyDbg在0040226D關鍵CALL處下斷點,F7跟入
;======================================================
:0040224A FF431C inc [ebx+1C]
:0040224D 8B10 mov edx, dword ptr [eax]
:0040224F 8B86F4020000 mov eax, dword ptr [esi+000002F4]
:00402255 E89AC20B00 call 004BE4F4
:0040225A FF4B1C dec [ebx+1C]
:0040225D 8D856CFFFFFF lea eax, dword ptr [ebp+FFFFFF6C]
:00402263 BA02000000 mov edx, 00000002
:00402268 E8F7A70F00 call 004FCA64
:0040226D E886340000 call 004056F8 關鍵CALL,跟入
:00402272 84C0 test al, al 測試標誌位
:00402274 7448 je 004022BE 跳就完了
:00402276 33D2 xor edx, edx
:00402278 8B8618030000 mov eax, dword ptr [esi+00000318]
:0040227E E8C5770800 call 00489A48
:00402283 66C74310C800 mov [ebx+10], 00C8
* Possible StringData Ref from Data Obj ->"迷你網路電視-註冊版"
|
:00402289 BA52035300 mov edx, 00530352
:0040228E 8D8568FFFFFF lea eax, dword ptr [ebp+FFFFFF68]
:00402294 E8FBA60F00 call 004FC994
:00402299 FF431C inc [ebx+1C]
:0040229C 8B10 mov edx, dword ptr [eax]
:0040229E 8B86F0020000 mov eax, dword ptr [esi+000002F0]
:004022A4 E827C00300 call 0043E2D0
:004022A9 FF4B1C dec [ebx+1C]
:004022AC 8D8568FFFFFF lea eax, dword ptr [ebp+FFFFFF68]
:004022B2 BA02000000 mov edx, 00000002
:004022B7 E8A8A70F00 call 004FCA64
:004022BC EB56 jmp 00402314
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402274(C)
|
:004022BE 66C74310D400 mov [ebx+10], 00D4
* Possible StringData Ref from Data Obj ->"迷你網路電視-未註冊版"
|
:004022C4 BA66035300 mov edx, 00530366
:004022C9 8D8564FFFFFF lea eax, dword ptr [ebp+FFFFFF64]
:004022CF E8C0A60F00 call 004FC994
:004022D4 FF431C inc [ebx+1C]
:004022D7 8B10 mov edx, dword ptr [eax]
:004022D9 8B86F0020000 mov eax, dword ptr [esi+000002F0]
:004022DF E8ECBF0300 call 0043E2D0
:004022E4 FF4B1C dec [ebx+1C]
:004022E7 8D8564FFFFFF lea eax, dword ptr [ebp+FFFFFF64]
:004022ED BA02000000 mov edx, 00000002
:004022F2 E86DA70F00 call 004FCA64
:004022F7 6A01 push 00000001
;===============================================================
;從0040226D跟入後來到這裡
004056F8 /$ BA 78785400 MOV EDX,nettvprj.00547878
004056FD |. FF02 INC DWORD PTR DS:[EDX]
004056FF |. 8302 09 ADD DWORD PTR DS:[EDX],9
00405702 |. 33C0 XOR EAX,EAX
00405704 |> FF02 /INC DWORD PTR DS:[EDX] 這裡迴圈次數為25=37次
00405706 |. 2902 |SUB DWORD PTR DS:[EDX],EAX
00405708 |. 40 |INC EAX
00405709 |. 83F8 25 |CMP EAX,25 這個迴圈有什麼用??不知道~
0040570C |.^7C F6 \JL SHORT nettvprj.00405704 按F8三十七次,注意別按過頭了
0040570E |. E8 EDFEFFFF CALL nettvprj.00405600 來到這個CALL,跟入
00405713 \. C3 RETN
;===============================================================
;從0040570E跟入後來到這裡,這才是演算法的關鍵:
00405600 /$ 53 PUSH EBX
00405601 |. 56 PUSH ESI
00405602 |. 57 PUSH EDI
00405603 |. 55 PUSH EBP
00405604 |. 803D A8025300 >CMP BYTE PTR DS:[5302A8],0 機器碼標誌是否為0?
0040560B |. 75 32 JNZ SHORT nettvprj.0040563F 不為0,跳到0040563F;為0,重新計算機器碼
0040560D |. 68 39300000 PUSH 3039 機器碼計算過程
00405612 |. E8 519D1200 CALL
00405617 |. 59 POP ECX
00405618 |. 8BD0 MOV EDX,EAX
0040561A |. C1E0 03 SHL EAX,3
0040561D |. 2BC2 SUB EAX,EDX
0040561F |. 8D0482 LEA EAX,DWORD PTR DS:[EDX+EAX*4]
00405622 |. 05 0FCD7F00 ADD EAX,7FCD0F
00405627 |. B9 1F000000 MOV ECX,1F
0040562C |. 99 CDQ
0040562D |. F7F9 IDIV ECX
0040562F |. 05 0FCD7F00 ADD EAX,7FCD0F
00405634 |. A3 A4025300 MOV DWORD PTR DS:[5302A4],EAX
00405639 |. FE05 A8025300 INC BYTE PTR DS:[5302A8]
0040563F |> 8B1D A4025300 MOV EBX,DWORD PTR DS:[5302A4] 取機器碼入EBX
00405645 |. A1 A0025300 MOV EAX,DWORD PTR DS:[5302A0] 這裡EBX為機器碼HEX值
0040564A |. A3 74785400 MOV DWORD PTR DS:[547874],EAX
0040564F |. 8BC3 MOV EAX,EBX
00405651 |. 99 CDQ
00405652 |. B9 1F000000 MOV ECX,1F 1F=31入ECX
00405657 |. F7F9 IDIV ECX 機器碼244E0C5除以1F=12BCED入EAX
00405659 |. 8BE8 MOV EBP,EAX EBP=EAX=12BCED
0040565B |. 8BC3 MOV EAX,EBX
0040565D |. 99 CDQ
0040565E |. B9 07000000 MOV ECX,7 ECX=7
00405663 |. F7F9 IDIV ECX 機器碼244E0C5除以7=52FB89作為原始註冊碼入EAX
00405665 |. FF05 A0025300 INC DWORD PTR DS:[5302A0]
0040566B |. FF05 A0025300 INC DWORD PTR DS:[5302A0]
00405671 |. C605 8C025300 >MOV BYTE PTR DS:[53028C],0
00405678 |. 8BF0 MOV ESI,EAX EAX=ESI=52FB89
0040567A |. A1 A0025300 MOV EAX,DWORD PTR DS:[5302A0]
0040567F |. 0105 74785400 ADD DWORD PTR DS:[547874],EAX
00405685 |. FF05 A0025300 INC DWORD PTR DS:[5302A0]
0040568B |. 8B3D 90025300 MOV EDI,DWORD PTR DS:[530290] 地址530290為假註冊碼
00405691 |. B9 01000000 MOV ECX,1 初始化記數器
00405696 |. EB 0B JMP SHORT nettvprj.004056A3
00405698 |> 03F1 /ADD ESI,ECX 迴圈開始,ECX=1,原始註冊碼累加
0040569A |. FF05 74785400 |INC DWORD PTR DS:[547874]
004056A0 |. 2BF9 |SUB EDI,ECX EDI為假註冊碼,遞減
004056A2 |. 41 |INC ECX 記數器加1
004056A3 |> 8BC3 MOV EAX,EBX 上面00405696直接跳轉到這裡,所以迴圈次數為1F-1=1E即30次
004056A5 |. 99 |CDQ
004056A6 |. F7FD |IDIV EBP 機器碼244E0C5除以12BCED=1F作為迴圈次數
004056A8 |. 3BC8 |CMP ECX,EAX 記數器是否等於迴圈次數?
004056AA |.^7C EC \JL SHORT nettvprj.00405698 迴圈
004056AC |. 3BF7 CMP ESI,EDI 這裡就是比較,記憶體序號產生器在這裡做,得到的數要加上465
004056AE |. 75 1D JNZ SHORT nettvprj.004056CD
【分析總結】:
註冊碼儲存在Windows目錄下的mntv.ini檔案中。
記憶體序號產生器:
中斷地址:40226D
次數:1
指令:E8
長度:5
中斷地址:40570E
次數:1
指令:E8
長度:5
中斷地址:4056AC
次數:1
指令:3B
長度:2
暫存器方式->ESI->十進位制
得到的數值再加上465即為註冊碼
【演算法分析】:
機器碼244E0C5/1F=12BCED作為被除數
然後再用機器碼244E0C5/12BCED=1F作為迴圈次數
機器碼244E0C5/7=52FB89作為註冊碼原始數值
透過1F-1=1E兩次的累加,即1+2+3+4....+1D+1E=1D1,則原始註冊碼+1D1*2(即十進位制465)為正確註冊碼.
用VB寫個序號產生器,Text1為機器碼,Text2為註冊碼
------------------------
Dim ESI As Long
ESI = Int(Val(Text1.Text) / 7)
For i = 1 To Int(Val(Text1.Text) / 1228013) - 1
ESI = ESI + i * 2
Next i
Text2.Text = ESI
------------------------
仙劍太郎 http://cnokweb.yeah.net
中國X駭客小組 www.CnXHacker.com
相關文章
- 迷你網路電視5.1註冊演算法2003-07-04演算法
- 黑馬多媒體電子教室精簡版簡單演算法分析 (8千字)2015-11-15演算法
- 網路電視專家5.0演算法分析2004-05-29演算法
- 簡單演算法――網路電話 Talking anywhere 5.02003-03-14演算法
- (原創)叮咚極品網路電視電影III
V3.92-----演算法分析2004-05-28演算法
- SysSync Version 1.02簡單演算法分析+VB序號產生器原始碼 (8千字)2015-11-15演算法原始碼
- Teleport
pro 演算法簡單分析2004-07-15演算法
- 網路電視大師 2004VER2.0.0.1版演算法分析(簡單)DD本年度最後一篇2015-11-15演算法
- JavaScript 實現簡單的神經網路演算法2016-06-14JavaScript神經網路演算法
- 一個很簡單的演算法!! (3千字)2002-10-08演算法
- 用 JS 實現簡單的神經網路演算法2016-06-13JS神經網路演算法
- 簡單演算法2024-08-09演算法
- DeTitle V1.33簡單演算法分析2003-08-06演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- Source Insight 3.5 演算法簡單分析2015-11-15演算法
- 網路電視大師 V4.0.0 Build 2003.9.25註冊演算法簡析2015-11-15UI演算法
- Screen Demo Maker
V3.0註冊演算法分析 (8千字)2002-09-10演算法
- 簡單演算法---A Speeder
V2.5破解的簡要分析!2015-11-15演算法
- 簡單排序演算法2020-11-27排序演算法
- 從內容出發 這樣選網際網路電視更簡單2016-12-14
- 簡單演算法――網頁特效夢工廠
XP 1.52015-11-15演算法網頁特效
- GSview V4.12 for Windows註冊演算法分析 -
OCG (8千字)2015-11-15ViewWindows演算法
- mrtg網路流量分析, 簡單安裝mrtg分析網路流量(轉)2007-08-10
- System
commander 8 演算法分析2004-07-17演算法
- powerarchiver 8.00.58 之不完全破解+簡單演算法分析2015-11-15Hive演算法
- Instyler Ex-it!
漢化版 1.64 簡單演算法分析2015-11-15演算法
- LRU演算法簡單例子2013-11-26演算法單例
- 炒股理財演算法分析 (3千字)2001-03-31演算法
- HappyEO演算法分析
(11千字)2015-11-15APP演算法
- Sitman2.1
演算法分析 (5千字)2015-11-15演算法
- 菜鳥破解錄之 GIF Construction Set Pro及演算法分析
(8千字)2000-09-01Struct演算法
- 〖網際營銷〗V2.4 註冊演算法分析 (11千字)2001-11-03演算法
- 一個區域網工具的註冊演算法分析
(5千字)2015-11-15演算法
- 簡單理解Paxos演算法(譯)2019-03-04演算法
- 15道簡單演算法題2014-06-08演算法
- rOYALaCCEZZ Trial Crackme 3.2 演算法分析 (10千字)2002-02-27演算法
- SuperCleaner演算法分析----菜鳥級
(12千字)2015-11-15演算法
- Readbook 1.42版 演算法分析。 (1千字)2015-11-15演算法