Dialog-Medien MP3Play OCX的破解
版本:1.4
工具:TRW2000和ActiveX Control Test Container
目標說明:一個專為MPEG Audio layer 3格式檔案解碼的軟體,
能夠產生高品質高壓縮率的檔案,未註冊版本只能播放30秒!
難度:低階?
下載地址:一般的VB站點都會提供此控制元件的下載!
補充說明:此控制元件並不是用LIC檔案或直接輸入註冊資訊來註冊的,而是呼叫控制元件內部函式
Authorize("Name","RegCode")來註冊的。若返回的值等於-5,則註冊失敗;
若返回的值等於0,則註冊成功!為了破解此控制元件,要用到MicroSoft出品的
Visual C++ 5.0或6.0中附帶的控制元件除錯工具ActiveX Control Test
Container。
=====================================================================================
(1) 執行ActiveX Control Test Container後,在"Edit"選單項中選擇"Insert OLE Control...",
在控制元件列表中,選擇"Dialog-Medien Mp3Play Control";然後,在"Edit"選單項中選擇"Invoke
Methods",選擇"Authorize",輸入Name:"sUpErbOss",Password:"1122334455"。
按Ctrl-D切換到TRW2000下,打入BPX HMEMCPY設段。
按F5鍵回到Windows下,點選"Invoke"按鈕
被TRW2000攔下後,將中斷Disable,下BD *指令。
(2) 現在正處於系統的領空, 所以,按幾下F12鍵或打入PModule,快速返回到程式模組下。
然後,再下BPX WideCharToMultiByte設段。
再按F5繼續執行,每次被攔下後,注意下D ESP+C指令,
在資料框中會看到如下的資料型式: (注:假設ESP+C=0066EE24)
****:0066EE24 28 77 44 00 00 00 00 00 ......
再打入D 447728又會看到如下的資料型式:
****:00447728 73 00 55 00 70 00 45 00 72 00 62 00 4F 00 73 00
......
|
| | | | | |
|
s
U p E r b O
s
照以上步驟多做幾次,資料框中會出現如下的資料型式:
****:******** 2D 00 35 00 00 00 ......
|
|
-
5
根據MP3Play OCX的幫助檔案所述,當Authorize("Name","Password")的返回值為-5時,
表示註冊不成功;返回值為0時,表示註冊成功。
(3) 按兩次F12鍵跳出CALL,慢慢往上看,會看到如下的語句:
****:******** MOV EBX,[ESP+08] <---在此處按F9鍵設段!!
****:******** PUSH ESI
****:******** PUSH EDI
****:******** TEST EBX,EBX
****:******** MOV ESI,ECX
****:******** JNZ 5E45A819
.
.
若在斷點的下一條指令處,下D EBX指令,則知[EBX]="-5"
再下BPM EBX指令設段,重新執行註冊步驟,按F5鍵幾次後,會在下面被攔下:
****:10007C75 CMP BYTE PTR [EAX], 00 ---> [EAX]="sUpErbOss"
****:10007C78 JE 10007DC8
****:10007C7E MOV EBX, DWORD PTR [ESP+60]
****:10007C82 TEST EBX, EBX
****:10007C84 JE 10007DC8
****:10007C8A CMP BYTE PTR [EBX], 00 ---> [EBX]="1122334455"
****:10007C8D JE 10007DC8
.
.
.
****:10007D2D XOR EDX, EDX
****:10007D2F MOV ECX, 66D81CC3
****:10007D34 DIV ECX
****:10007D36 CMP EDX, DWORD PTR [ESP+60] --->[ESP+60]="42E576F7",EDX="4ED6ED8E"
****:10007D3A SETE AL
****:10007D3D TEST AL, AL
****:10007D3F JE 10007DC8
注意:"42E576F7"好像很熟悉,哦!這不就是"1122334455"的十六進位制形式嗎!那EDX的值的十進位制
形式"1322708366"不就是正確的註冊號嗎?
(4) 下BD * 指令,重新輸入Name:"sUpErbOss",Password:"1322708366"。
點選"Invoke"按鈕後,在ReturnedI2欄中,會顯示返回值為"0"。
搞定!