• 标 题:媒体2000V6.0-高级复唱机破解? (774字)
  • 作 者:Dream_er
  • 时 间:2001-2-18 22:02:03
  • 链 接:http://bbs.pediy.com

简单破解:
1.修改注册表:用RegSnap比较运行mt2000.exe前后,发现注册表中如下键值发生变化,下次运行时将注册表的值改过来即可。
HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VideoOutType\
VideoOutVolue=0x00000024(36) <--还能运行9次(键值不能小于该值)
VideoOutVolue=ox00000024(36) (两个键值都改)

2.修改mt2000.exe,使之可运行次数不减少:
先用W32dasm反编译mt2000.exe,在"裁判"->"串式数据参考"中查找"您未能成功输入本版注册号,只能在一定期限内..."字样,双击之,来到反汇编代码处,向上走几步,看到"00410C09 2BF0  sub esi,eax",这就是减少使用次数的代码。用HIEW将其改为"9090  nop nop"即可。

高级破解:求助!!!!!
3.修改mt2000.exe,使任意输入注册号都能注册成功。(用TRW2000跟踪半天,没能找到关键地方。)

4.跟踪到进行注册号比较的地方,直接找到注册号(也没成功!5555555)

  • 标 题:《媒体2000V6.0》破解心得: (3千字)
  • 作 者:小 明
  • 时 间:2001-2-21 13:32:48

  一、流程分析
  先运行TRW2000 1.23注册版,再运行媒体2000,随便乱输注册码,确定,跳出窗口提示注册码错,按ctrl-N,下pmodule命令,返回出错窗口,点确定,立刻被拦,按2次F10来到40f41d处,往上看:
0167:0040F0D1  LEA      ECX,[ESP+48]
0167:0040F0D5  MOV      BYTE [ESP+052C],0A
0167:0040F0DD  CALL    004593E8        显示输入框
0167:0040F0E2  CMP      EAX,BYTE +01      按确定?
0167:0040F0E5  JNZ      NEAR 0040F40E      否
0167:0040F0EB  LEA      EAX,[ESP+A4]
0167:0040F0F2  LEA      ECX,[ESP+14]
0167:0040F0F6  PUSH    EAX
0167:0040F0F7  CALL    0045DD86
0167:0040F0FC  MOV      ECX,[ESP+14]
0167:0040F100  PUSH    DWORD 004A7B48
0167:0040F105  PUSH    ECX
0167:0040F106  CALL    0043319B
0167:0040F10B  ADD      ESP,BYTE +08
0167:0040F10E  TEST    EAX,EAX         注册码为空?
0167:0040F110  JZ      0040F15C         是
0167:0040F112  MOV      EDX,[ESP+14]
0167:0040F116  MOV      EAX,[EDX-08]       取注册码长度
0167:0040F119  CMP      EAX,BYTE +0C
0167:0040F11C  JL      0040F15C        小于12则错
0167:0040F11E  PUSH    BYTE +04
0167:0040F120  LEA      EAX,[ESP+14]
0167:0040F124  PUSH    BYTE +08
0167:0040F126  PUSH    EAX
0167:0040F127  LEA      ECX,[ESP+20]
0167:0040F12B  CALL    0044F1DB        取注册码的第8-12位
0167:0040F130  MOV      EAX,[EAX]
0167:0040F132  PUSH    EAX
0167:0040F133  CALL    0043362C        变成数值
0167:0040F138  ADD      ESP,BYTE +04
0167:0040F13B  LEA      ECX,[ESP+10]
0167:0040F13F  MOV      ESI,EAX        存入ESI
0167:0040F141  CALL    0045DC4D
0167:0040F146  CMP      ESI,BYTE +64
0167:0040F149  JNL      0040F158        小于64则错
0167:0040F14B  PUSH    BYTE +00
0167:0040F14D  PUSH    EBP
0167:0040F14E  PUSH    DWORD 004A1C9C
0167:0040F153  JMP      0040F416
0167:0040F158  CMP      ESI,EDI        等于识别码后4位?
0167:0040F15A  JZ      0040F169        等于
0167:0040F15C  PUSH    BYTE +00
0167:0040F15E  PUSH    EBP
0167:0040F15F  PUSH    DWORD 004A1C9C
0167:0040F164  JMP      0040F416        出错
0167:0040F169  LEA      ECX,[EDI+EDI*4]    以下校验注册码的真假
0167:0040F16C  LEA      EDX,[EDI+EDI*8]
0167:0040F16F  LEA      EAX,[EDI+ECX*8]
0167:0040F172  LEA      ESI,[EDI+EDX*2]
0167:0040F175  LEA      ECX,[EAX+EAX*2]
.
.
.
0167:0040F300  LEA      EAX,[ECX+EAX*4]
0167:0040F303  LEA      EAX,[EAX+EAX*4]
0167:0040F306  LEA      ECX,[EAX+EAX*4]
0167:0040F309  LEA      EAX,[ESI+ECX*4]
0167:0040F30C  LEA      EAX,[EAX+EAX*4]
0167:0040F30F  LEA      EAX,[EAX+EAX*4]
0167:0040F312  LEA      EDX,[EDX+EAX*4-1C]
0167:0040F316  MOV      EAX,[ESP+44]
0167:0040F31A  CMP      EAX,EDX        注册码为真?
0167:0040F31C  JNZ      NEAR 0040F3C1     否,出错

弄清以上流程,爆破就容易了。

  二、注册码的校验算法
  1、将输入的12位注册码分成2部分:前8位设为X,后4位设为Y(均为10进制,以下同);
  2、将Y*123的前3位与Y*456的第2、3、4位串起来成为一个6位数,设为Z;
  3、计算X-Z,设为M;
  4、将M从高位到低位分成4个2位数,设为A、B、C、D;
  5、将A、B、C、D重新组合成新的8位数CBDA,计算CBDA-15111028,设为N;
  6、比较N与识别码的前8位,相等则输入的注册码为真,否则为假。

  三、注册码的生成算法
  1、将软件给出的12位识别码分成2部分:前8位设为X,后4位设为Y(均为10进制,以下同);
  2、将Y*123的前3位与Y*456的第2、3、4位串起来成为一个6位数,设为Z;
  3、计算X+15111028,设为M;
  4、将M从高位到低位分成4个2位数,设为A、B、C、D;
  5、将A、B、C、D重新组合成新的8位数DBAC,计算DBAC+Z,设为N;
  6、将N与识别码的后4位串起来,形成注册码。

  四、注册成功标志
  注册成功标志放在注册表的HKEY_USERS\.Default\RemoteAccess\Identf\Licn处。

  • 标 题:媒体2000V6.0注册机(VB): (631字)
  • 作 者:小 明
  • 时 间:2001-2-21 0:05:43

'《媒体2000V6.0》算号器,请用VB5以上编译
'说明:Text1为机器识别号(12位数字),Text2为注册码(自动算出)
'作者:小明 2001.2.20
Private Sub Text1_Change()
  s = Trim(Text1.Text)
  If Len(s) = 12 Then
    x = Val(Left(s, 8))
    y = Val(Right(s, 4))
    z = Val(Left(Trim(Str(y * 123)), 3) + Mid(Trim(Str(y * 456)), 2, 3))
    x = x + 28
    a = x Mod 100
    x = x \ 100 + 10
    d = x Mod 100
    x = x \ 100 + 11
    b = x Mod 100
    x = x \ 100 + 15
    c = x Mod 100
    z = a * 1000000 + b * 10000 + c * 100 + d + z
    Text2.Text = Trim(Str(z)) + Right(s, 4)
  Else
    Text2.Text = ""
  End If
End Sub