Dialog-Medien MP3Play OCX的破解

看雪資料發表於2000-11-21

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"。
    搞定!

相關文章