史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 網路軟硬體架設技術文件
忘記密碼?
註冊帳號 論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-12-12, 03:28 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 簡單算法:迷你網路電視算法分析

【軟體名稱】:迷你網路電視 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 <JMP.&MC.fnMc>
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
psac 目前離線  
送花文章: 3, 收花文章: 1630 篇, 收花: 3204 次
舊 2003-12-12, 11:02 AM   #2 (permalink)
註冊會員
榮譽勳章
UID - 70407
在線等級: 級別:8 | 在線時長:106小時 | 升級還需:11小時級別:8 | 在線時長:106小時 | 升級還需:11小時級別:8 | 在線時長:106小時 | 升級還需:11小時
註冊日期: 2003-05-20
VIP期限: 2006-09
住址: 南台灣
文章: 48
精華: 0
現金: 79 金幣
資產: 79 金幣
預設

太神奇了
看不懂
喝喝
f4liuliu 目前離線  
送花文章: 0, 收花文章: 1 篇, 收花: 2 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 10:22 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2020, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1