飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9084|回复: 10

[原创] MP4-RM转换专家豪华版2009算法不完全分析

[复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-10-9 19:23:32 | 显示全部楼层 |阅读模式
    【破文标题】MP4-RM转换专家豪华版2009算法不完全分析
    【破文作者】Zaas
    【作者邮箱】[email protected]
    【作者主页】
    破解工具】OD,MD5计算器
    【破解平台】XP SP3
    【软件名称】MP4-RM转换专家豪华版2009
    【软件大小】12.3 MB
    【原版下载】
    【保护方式】注册码
    【软件简介】
    《MP4/RM全能视频转换专家豪华版2008》  是一款多格式转换软件。操作界面简单,用户第一次使用便可根据实际情况,顺利操作。
    它可以把几乎所有流行的视频格式
    如RM/RMVB/VOB/AVI/MPEG/DAT/VCD/SVCD/DVD/ASF/WMV/MPG 等视频文件转换为普通MP4机、MP4手机、PSP机、iPod或DVD影碟机等硬件支持的AVI、MP4、PMP、3GP格式。
      PSP(PMP) :转换后的文件适合PSP机播放;
     IPOD(MP4):转换后的文件适合APPLE iPod播放;
       手机(MP4、3GP):转换后的文件适合各种支持MP4、3GP的手机播放;
      AVI   :转换后的文件适合各种支持DivX/XivD/MJpeg1/MJpeg2/H264编码的MP4机、手机、PDA播放
    【破解声明】
    ------------------------------------------------------------------------
    【破解过程】前几天见有人贴了这个软件的爆破过程,说对它的算法弄不懂。某对算法的知识仅仅来自于看的几篇破文,实践经验只有一次。某虽不才,但想试试看自己有没有这个能耐。(压根儿没想到这么复杂!!)
    倒腾了一天,感慨良多。
    第一,软件设计的怎样我没试过,但内置广告一箩筐。在软件的加密上不可谓不用心,一次有一次的变幻,加密,追到我兴趣全无,草草收场。
    第二,花了那么多心思在加密上可最终注册码还是在堆栈中直接出现,前面那么多注册码的变幻措施又有什么意义。等于你把门锁的非常牢靠,可家当却放在门外。。。
    对Md5不熟悉甚至可以说陌生,所以算法分析走马观花,只能算“不完全分析”,分析也许完全谬误,会让人误入歧途。初学的凑合着看看吧。

    首先老一套,找字符串。来到
    00406356     .  6A FF              push -1
    00406358     .  68 C86A4300        push MP4_Conv.00436AC8
    0040635D     .  50                 push eax
    0040635E     .  64:8925 00000000   mov dword ptr fs:[0],esp
    00406365     .  83EC 54            sub esp,54
    00406368     .  55                 push ebp
    00406369     .  56                 push esi
    0040636A     .  57                 push edi
    0040636B     .  8BF1               mov esi,ecx
    0040636D     .  6A 01              push 1
    0040636F     .  E8 CB610200        call MP4_Conv.0042C53F                              ;  读注册名、假码
    00406374     .  8B46 60            mov eax,dword ptr ds:[esi+60]
    00406377     .  8B40 F8            mov eax,dword ptr ds:[eax-8]
    0040637A     .  83F8 13            cmp eax,13                                          ;  注册名=19位
    0040637D     .  0F85 92010000      jnz MP4_Conv.00406515                               ;  不是19位则跳死
    00406383     .  8B4E 5C            mov ecx,dword ptr ds:[esi+5C]                       ;  读入假码
    00406386     .  8379 F8 13         cmp dword ptr ds:[ecx-8],13                         ;  不是19位则跳死
    0040638A     .  0F85 85010000      jnz MP4_Conv.00406515
    00406390     .  53                 push ebx
    00406391     .  68 D4754400        push MP4_Conv.004475D4                              ;  ASCII "\ur.rtbt"
    00406396     .  8D5424 14          lea edx,dword ptr ss:[esp+14]
    0040639A     .  68 24E74400        push MP4_Conv.0044E724
    0040639F     .  52                 push edx                                            ;  看看有没有ur.rtbt这个文件
    004063A0     .  E8 47300200        call MP4_Conv.004293EC
    004063A5     .  8B00               mov eax,dword ptr ds:[eax]
    004063A7     .  C74424 6C 00000000 mov dword ptr ss:[esp+6C],0
    004063AF     .  50                 push eax
    004063B0     .  E8 6BB50000        call MP4_Conv.00411920
    004063B5     .  83CD FF            or ebp,FFFFFFFF
    004063B8     .  83C4 04            add esp,4
    004063BB     .  8D4C24 10          lea ecx,dword ptr ss:[esp+10]
    004063BF     .  8AD8               mov bl,al
    004063C1     .  896C24 6C          mov dword ptr ss:[esp+6C],ebp
    004063C5     .  E8 8D2D0200        call MP4_Conv.00429157                              ;  你已经注册过了
    004063CA     .  84DB               test bl,bl
    004063CC     .  5B                 pop ebx
    004063CD     .  74 27              je short MP4_Conv.004063F6
    004063CF     .  6A 00              push 0                                              ; /Arg3 = 00000000
    004063D1     .  6A 00              push 0                                              ; |Arg2 = 00000000
    004063D3     .  68 70764400        push MP4_Conv.00447670                              ; |注册成功
    004063D8     .  E8 45A50200        call MP4_Conv.00430922                              ; \MP4_Conv.00430922
    004063DD     .  8BCE               mov ecx,esi
    004063DF     .  E8 9C3E0200        call MP4_Conv.0042A280
    004063E4     .  5F                 pop edi
    004063E5     .  5E                 pop esi
    004063E6     .  5D                 pop ebp
    004063E7     .  8B4C24 54          mov ecx,dword ptr ss:[esp+54]
    004063EB     .  64:890D 00000000   mov dword ptr fs:[0],ecx
    004063F2     .  83C4 60            add esp,60
    004063F5     .  C3                 retn
    004063F6     >  8D4C24 28          lea ecx,dword ptr ss:[esp+28]
    004063FA     .  E8 F14B0000        call MP4_Conv.0040AFF0
    004063FF     .  8D4424 3C          lea eax,dword ptr ss:[esp+3C]
    00406403     .  C74424 68 01000000 mov dword ptr ss:[esp+68],1
    0040640B     .  50                 push eax
    0040640C     .  E8 6F4A0000        call MP4_Conv.0040AE80
    00406411     .  8B46 60            mov eax,dword ptr ds:[esi+60]                       ;  注册名->eax
    00406414     .  83C4 04            add esp,4
    00406417     .  8D4C24 48          lea ecx,dword ptr ss:[esp+48]
    0040641B     .  50                 push eax
    0040641C     .  E8 EF900000        call MP4_Conv.0040F510
    00406421     .  8B46 5C            mov eax,dword ptr ds:[esi+5C]                       ;  假码->eax
    00406424     .  8D4C24 54          lea ecx,dword ptr ss:[esp+54]
    00406428     .  50                 push eax
    00406429     .  E8 E2900000        call MP4_Conv.0040F510                              ;  检测注册名假码是同一个call
    0040642E     .  8D4C24 28          lea ecx,dword ptr ss:[esp+28]
    00406432     .  E8 594F0000        call MP4_Conv.0040B390                              ;  关键call
    00406437     .  84C0               test al,al
    00406439     .  6A 00              push 0                                              ; /Arg3 = 00000000
    0040643B     .  6A 00              push 0                                              ; |Arg2 = 00000000
    0040643D     .  0F84 A2000000      je MP4_Conv.004064E5                                ; |
    00406443     .  68 70764400        push MP4_Conv.00447670                              ; |注册成功
    00406448     .  E8 D5A40200        call MP4_Conv.00430922                              ; \MP4_Conv.00430922
    0040644D     .  68 D4754400        push MP4_Conv.004475D4                              ;  ASCII "\ur.rtbt"
    00406452     .  8D4C24 14          lea ecx,dword ptr ss:[esp+14]

    找到关键call,只有跟进了。
    0040B396    |.  6A FF              push -1
    0040B398    |.  68 58724300        push MP4_Conv.00437258
    0040B39D    |.  50                 push eax
    0040B39E    |.  64:8925 00000000   mov dword ptr fs:[0],esp
    0040B3A5    |.  83EC 0C            sub esp,0C
    0040B3A8    |.  53                 push ebx
    0040B3A9    |.  8BD9               mov ebx,ecx
    0040B3AB    |.  55                 push ebp
    0040B3AC    |.  8D6B 2C            lea ebp,dword ptr ds:[ebx+2C]
    0040B3AF    |.  8BCD               mov ecx,ebp
    0040B3B1    |.  E8 2A4A0000        call MP4_Conv.0040FDE0                              ;  求长度的call
    0040B3B6    |.  83F8 13            cmp eax,13                                          ;  \
    0040B3B9    |.  0F85 9B000000      jnz MP4_Conv.0040B45A                               ;  |
    0040B3BF    |.  8D4B 20            lea ecx,dword ptr ds:[ebx+20]                       ;  |
    0040B3C2    |.  E8 194A0000        call MP4_Conv.0040FDE0                              ;  比较长度
    0040B3C7    |.  83F8 13            cmp eax,13                                          ;  |
    0040B3CA    |.  0F85 8A000000      jnz MP4_Conv.0040B45A                               ;  /
    0040B3D0    |.  8D4B 14            lea ecx,dword ptr ds:[ebx+14]                       ;  固定字符串948BE9E4EA29F95CA777FB7E50564FEA
    0040B3D3    |.  E8 084A0000        call MP4_Conv.0040FDE0                              ;  求其长度
    0040B3D8    |.  83F8 20            cmp eax,20                                          ;  32位
    0040B3DB    |.  75 7D              jnz short MP4_Conv.0040B45A
    0040B3DD    |.  56                 push esi
    0040B3DE    |.  57                 push edi
    0040B3DF    |.  8B7B 24            mov edi,dword ptr ds:[ebx+24]                       ;  注册名->edx
    0040B3E2    |.  B9 03000000        mov ecx,3
    0040B3E7    |.  BE A8784400        mov esi,MP4_Conv.004478A8                           ;  ASCII "P2_"
    0040B3EC    |.  33C0               xor eax,eax
    0040B3EE    |.  F3:A6              repe cmps byte ptr es:[edi],byte ptr ds:[esi]       ;  比较前三位
    0040B3F0    |.  5F                 pop edi
    0040B3F1    |.  5E                 pop esi
    0040B3F2    |.  75 66              jnz short MP4_Conv.0040B45A                         ;  不等则跳
    0040B3F4    |.  8D4C24 08          lea ecx,dword ptr ss:[esp+8]
    0040B3F8    |.  E8 33400000        call MP4_Conv.0040F430
    0040B3FD    |.  8D4C24 08          lea ecx,dword ptr ss:[esp+8]
    0040B401    |.  C74424 1C 00000000 mov dword ptr ss:[esp+1C],0
    0040B409    |.  51                 push ecx                                            ; /Arg1
    0040B40A    |.  8BCB               mov ecx,ebx                                         ; |
    0040B40C    |.  E8 EFFDFFFF        call MP4_Conv.0040B200                              ; \关键call
    0040B411    |.  8D4C24 08          lea ecx,dword ptr ss:[esp+8]
    0040B415    |.  E8 C6490000        call MP4_Conv.0040FDE0                              ;  求注册码位数
    0040B41A    |.  85C0               test eax,eax
    0040B41C    |.  74 16              je short MP4_Conv.0040B434
    0040B41E    |.  8D5424 08          lea edx,dword ptr ss:[esp+8]
    0040B422    |.  55                 push ebp
    0040B423    |.  52                 push edx
    0040B424    |.  E8 C74B0000        call MP4_Conv.0040FFF0                              ;  真假码比较
    0040B429    |.  83C4 08            add esp,8
    0040B42C    |.  84C0               test al,al                                          ;  比较标志位,爆破点
    0040B42E    |.  74 04              je short MP4_Conv.0040B434

    又是关键call,继续进。。。
    0040B200    /$  6A FF              push -1
    0040B202    |.  68 38724300        push MP4_Conv.00437238                              ;  SE 句柄安装
    0040B207    |.  64:A1 00000000     mov eax,dword ptr fs:[0]
    0040B20D    |.  50                 push eax
    0040B20E    |.  64:8925 00000000   mov dword ptr fs:[0],esp
    0040B215    |.  81EC A4000000      sub esp,0A4
    0040B21B    |.  56                 push esi
    0040B21C    |.  8BF1               mov esi,ecx
    0040B21E    |.  57                 push edi
    0040B21F    |.  8D4C24 3C          lea ecx,dword ptr ss:[esp+3C]
    0040B223    |.  E8 886C0000        call MP4_Conv.00411EB0
    0040B228    |.  6A 00              push 0
    0040B22A    |.  8D4C24 40          lea ecx,dword ptr ss:[esp+40]
    0040B22E    |.  C78424 B8000000 00>mov dword ptr ss:[esp+B8],0
    0040B239    |.  E8 42760000        call MP4_Conv.00412880                              ;  MD5初始常数
    0040B23E    |.  8B7E 24            mov edi,dword ptr ds:[esi+24]                       ;  注册名->edi
    0040B241    |.  8D4E 20            lea ecx,dword ptr ds:[esi+20]
    0040B244    |.  E8 974B0000        call MP4_Conv.0040FDE0                              ;  又求一次长度
    0040B249    |.  83E8 03            sub eax,3                                           ;  长度-3
    0040B24C    |.  83C7 03            add edi,3                                           ;  去掉前三位P2_
    0040B24F    |.  50                 push eax                                            ; /Arg2
    0040B250    |.  57                 push edi                                            ; |Arg1
    0040B251    |.  8D4C24 44          lea ecx,dword ptr ss:[esp+44]                       ; |
    0040B255    |.  E8 76760000        call MP4_Conv.004128D0                              ; \MP4_Conv.004128D0
    0040B25A    |.  8D4C24 3C          lea ecx,dword ptr ss:[esp+3C]                       ;  F(注册名)->ascii入栈
    0040B25E    |.  E8 2D770000        call MP4_Conv.00412990                              ;  求MD5
    0040B263    |.  8B08               mov ecx,dword ptr ds:[eax]                          ;  Md5码第一段
    0040B265    |.  894C24 1C          mov dword ptr ss:[esp+1C],ecx                       ;  搬运
    0040B269    |.  8B50 04            mov edx,dword ptr ds:[eax+4]
    0040B26C    |.  895424 20          mov dword ptr ss:[esp+20],edx
    0040B270    |.  8B48 08            mov ecx,dword ptr ds:[eax+8]
    0040B273    |.  894C24 24          mov dword ptr ss:[esp+24],ecx
    0040B277    |.  8D4C24 3C          lea ecx,dword ptr ss:[esp+3C]
    0040B27B    |.  8B50 0C            mov edx,dword ptr ds:[eax+C]
    0040B27E    |.  8B46 04            mov eax,dword ptr ds:[esi+4]                        ;  4次
    0040B281    |.  50                 push eax                                            ;  设置第二次计算常数初始值固定值000820BF
    0040B282    |.  895424 2C          mov dword ptr ss:[esp+2C],edx
    0040B286    |.  E8 F5750000        call MP4_Conv.00412880                              ;  ///设置第3次计算所用常数
    0040B28B    |.  33C0               xor eax,eax
    0040B28D    |>  8B4C04 1C          /mov ecx,dword ptr ss:[esp+eax+1C]
    0040B291    |.  83C0 04            |add eax,4
    0040B294    |.  F7D1               |not ecx
    0040B296    |.  894C04 08          |mov dword ptr ss:[esp+eax+8],ecx                   ;  对MD5值每组取反,转存
    0040B29A    |.  83F8 10            |cmp eax,10
    0040B29D    |.^ 7C EE              \jl short MP4_Conv.0040B28D
    0040B29F    |.  33F6               xor esi,esi
    0040B2A1    |.  8D7C24 2B          lea edi,dword ptr ss:[esp+2B]
    0040B2A5    |>  33D2               /xor edx,edx
    0040B2A7    |.  33C0               |xor eax,eax
    0040B2A9    |.  8A5434 0C          |mov dl,byte ptr ss:[esp+esi+C]                     ;  取反后第一组第一位
    0040B2AD    |.  8A07               |mov al,byte ptr ds:[edi]                           ;  取反前第4组第4位
    0040B2AF    |.  0FAFD0             |imul edx,eax                                       ;  逆序相乘
    0040B2B2    |.  8D4C24 08          |lea ecx,dword ptr ss:[esp+8]
    0040B2B6    |.  6A 04              |push 4                                             ; /Arg2 = 00000004
    0040B2B8    |.  51                 |push ecx                                           ; |Arg1
    0040B2B9    |.  8D4C24 44          |lea ecx,dword ptr ss:[esp+44]                      ; |
    0040B2BD    |.  895424 10          |mov dword ptr ss:[esp+10],edx                      ; |
    0040B2C1    |.  E8 0A760000        |call MP4_Conv.004128D0                             ; \此call把乘积作为字符串第二次MD5计算,计算所得四组数字作为常数做第三次Md5计算
    0040B2C6    |.  8A5424 08          |mov dl,byte ptr ss:[esp+8]
    0040B2CA    |.  46                 |inc esi
    0040B2CB    |.  8817               |mov byte ptr ds:[edi],dl                           ;  低位放入取反前第4组第4位
    0040B2CD    |.  4F                 |dec edi
    0040B2CE    |.  83FE 10            |cmp esi,10
    0040B2D1    |.^ 72 D2              \jb short MP4_Conv.0040B2A5
    0040B2D3    |.  8D4C24 3C          lea ecx,dword ptr ss:[esp+3C]
    0040B2D7    |.  E8 B4760000        call MP4_Conv.00412990                              ;  第三次Md5计算
    0040B2DC    |.  8B08               mov ecx,dword ptr ds:[eax]                          ;  第一段
    0040B2DE    |.  894C24 2C          mov dword ptr ss:[esp+2C],ecx                       ;  搬运
    0040B2E2    |.  8B50 04            mov edx,dword ptr ds:[eax+4]
    0040B2E5    |.  895424 30          mov dword ptr ss:[esp+30],edx
    0040B2E9    |.  8B48 08            mov ecx,dword ptr ds:[eax+8]
    0040B2EC    |.  894C24 34          mov dword ptr ss:[esp+34],ecx
    0040B2F0    |.  8B50 0C            mov edx,dword ptr ds:[eax+C]
    0040B2F3    |.  33C0               xor eax,eax
    0040B2F5    |.  895424 38          mov dword ptr ss:[esp+38],edx                       ;  搬运完毕
    0040B2F9    |>  8B4C04 2C          mov ecx,dword ptr ss:[esp+eax+2C]                   ;  第三次 MD5 第一段设为Rb-1
    0040B2FD    |.  8B7404 1C          mov esi,dword ptr ss:[esp+eax+1C]                   ;  变幻后的注册名MD5第一段,设为Ra-1
    0040B301    |.  33CE               xor ecx,esi                                         ;  Ra-1 xor Rb-1设为Rc-1
    0040B303    |.  894C04 0C          mov dword ptr ss:[esp+eax+C],ecx                    ;  放回
    0040B307    |.  83C0 04            add eax,4
    0040B30A    |.  83F8 10            cmp eax,10
    0040B30D    |.^ 7C EA              jl short MP4_Conv.0040B2F9                          ;  依次求2,3,4段
    0040B30F    |.  8B4C24 14          mov ecx,dword ptr ss:[esp+14]                       ;  Rc-3
    0040B313    |.  8B4424 18          mov eax,dword ptr ss:[esp+18]                       ;  Rc-4
    0040B317    |.  0FAF4C24 10        imul ecx,dword ptr ss:[esp+10]                      ;  Rc-3*Rc-2
    0040B31C    |.  0FAF4424 0C        imul eax,dword ptr ss:[esp+C]                       ;  Rc-4*Rc-1
    0040B321    |.  894C24 10          mov dword ptr ss:[esp+10],ecx                       ;  Rc-3*Rc-2放入Rc-2
    0040B325    |.  8B5424 12          mov edx,dword ptr ss:[esp+12]
    0040B329    |.  81E2 FFFF0000      and edx,0FFFF                                       ;  Rc-2后半段放入edx
    0040B32F    |.  81E1 FFFF0000      and ecx,0FFFF                                       ;  Rc-2前半段放入ecx
    0040B335    |.  52                 push edx                                            ;  Rc-2后半段入栈
    0040B336    |.  8B9424 C0000000    mov edx,dword ptr ss:[esp+C0]
    0040B33D    |.  894424 10          mov dword ptr ss:[esp+10],eax                       ;  Rc-4*Rc-1放入Rc-1
    0040B341    |.  51                 push ecx                                            ;  Rc-2前半段入栈
    0040B342    |.  8B4C24 16          mov ecx,dword ptr ss:[esp+16]
    0040B346    |.  25 FFFF0000        and eax,0FFFF                                       ;  Rc-1前半段放入Eax
    0040B34B    |.  81E1 FFFF0000      and ecx,0FFFF                                       ;  Rc-1后半段放入Ecx
    0040B351    |.  51                 push ecx                                            ;  Rc-1后半段入栈
    0040B352    |.  50                 push eax                                            ;  Rc-1前半段入栈
    0040B353    |.  68 94784400        push MP4_Conv.00447894                              ;  ASCII "%.4X-%.4X-%.4X-%.4X"
    0040B358    |.  52                 push edx
    0040B359    |.  E8 C2430000        call MP4_Conv.0040F720                              ;  转换成XXXX-XXXX-XXXX-XXXX格式
    0040B35E    |.  83C4 18            add esp,18                                          ;  注册码即Rc-1&Rc-2 四个字符一组中间加“-”


    ------------------------------------------------------------------------
    【破解总结】首先看注册名前三位是不是“P2_”
    然后计算去掉前三位后的16位注册名的MD5作为R1
    接着对R1取反,和原MD5值逆序相乘,乘积做第二次MD5计算,乘积的低位作为注册码的中间过程值R2
    把第二次MD5计算所得MD5值分四组作为MD5常数(替换默认常数01234567,89abcdef,fedcba98,76543210)进行变形MD5计算,得到R3
    接下来对R3和R2做Xor计算得到R4
    把R4分为四段,分别为R4[1],R4[2],R4[3],R4[4]。R4[1]*R4[4]&R4[2]*R4[3]得到R5
    把R5分为四段,中间加"-"即为注册码
    附注:第二次第三次MD5计算某没有演算,因此只是追踪过程中的推测,所以也无从写注册机.
    其实还是爆破比较合适,广告窗口,看了就烦!注册完了还有注册按钮!无聊!
    删除软件目录中的ur.rtbt即可重新注册。

    一组可用的注册码:
    P2_Zaas_PYG_2009/10
    D4D2-9D11-1BDE-06CF
    ------------------------------------------------------------------------
    【版权声明】
    无有

    [ 本帖最后由 zaas 于 2009-10-9 19:30 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-10-9 20:39:41 | 显示全部楼层
    我记得好像有网验的/:017 不过很简单哦
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-10-9 21:17:55 | 显示全部楼层
    /:L明天我找找看。。嘿嘿嘿嘿
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-9 23:05:03 | 显示全部楼层
    新手,有点看不懂
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-4-18 15:36
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2009-10-10 19:42:49 | 显示全部楼层
    好文章,分析得比较详细/鼓掌~~!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-11 07:15:45 | 显示全部楼层
    国产机来电归属地文件
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-11 09:54:34 | 显示全部楼层
    学习一下。
    PYG19周年生日快乐!
  • TA的每日心情

    4 天前
  • 签到天数: 1944 天

    [LV.Master]伴坛终老

    发表于 2009-10-11 10:04:01 | 显示全部楼层
    先学习一下为考试奠定基础。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-14 09:35:55 | 显示全部楼层
    爆破 找注册码 简单软件应该都可以,初学者,
    难就是做个注册机,这个好象得学会编程吧
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-14 16:31:36 | 显示全部楼层
    这个软件很好,给我同学看下,他在用/:014
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表