• 标 题:Dialog-Medien MP3Play OCX的破解
  • 作 者:superboss
  • 时 间:2000-11-21 15:20:57
  • 链 接:http://bbs.pediy.com

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