zaas 发表于 2009-10-9 19:23:32

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

【破文标题】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:,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:
00406377   .8B40 F8            mov eax,dword ptr ds:
0040637A   .83F8 13            cmp eax,13                                          ;注册名=19位
0040637D   .0F85 92010000      jnz MP4_Conv.00406515                               ;不是19位则跳死
00406383   .8B4E 5C            mov ecx,dword ptr ds:                     ;读入假码
00406386   .8379 F8 13         cmp dword ptr ds:,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:
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:
004063A7   .C74424 6C 00000000 mov dword ptr ss:,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:
004063BF   .8AD8               mov bl,al
004063C1   .896C24 6C          mov dword ptr ss:,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:
004063EB   .64:890D 00000000   mov dword ptr fs:,ecx
004063F2   .83C4 60            add esp,60
004063F5   .C3               retn
004063F6   >8D4C24 28          lea ecx,dword ptr ss:
004063FA   .E8 F14B0000      call MP4_Conv.0040AFF0
004063FF   .8D4424 3C          lea eax,dword ptr ss:
00406403   .C74424 68 01000000 mov dword ptr ss:,1
0040640B   .50               push eax
0040640C   .E8 6F4A0000      call MP4_Conv.0040AE80
00406411   .8B46 60            mov eax,dword ptr ds:                     ;注册名->eax
00406414   .83C4 04            add esp,4
00406417   .8D4C24 48          lea ecx,dword ptr ss:
0040641B   .50               push eax
0040641C   .E8 EF900000      call MP4_Conv.0040F510
00406421   .8B46 5C            mov eax,dword ptr ds:                     ;假码->eax
00406424   .8D4C24 54          lea ecx,dword ptr ss:
00406428   .50               push eax
00406429   .E8 E2900000      call MP4_Conv.0040F510                              ;检测注册名假码是同一个call
0040642E   .8D4C24 28          lea ecx,dword ptr ss:
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:

找到关键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:,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:
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:                     ;|
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:                     ;固定字符串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:                     ;注册名->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:,byte ptr ds:       ;比较前三位
0040B3F0    |.5F               pop edi
0040B3F1    |.5E               pop esi
0040B3F2    |.75 66            jnz short MP4_Conv.0040B45A                         ;不等则跳
0040B3F4    |.8D4C24 08          lea ecx,dword ptr ss:
0040B3F8    |.E8 33400000      call MP4_Conv.0040F430
0040B3FD    |.8D4C24 08          lea ecx,dword ptr ss:
0040B401    |.C74424 1C 00000000 mov dword ptr ss:,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:
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:
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:
0040B20D    |.50               push eax
0040B20E    |.64:8925 00000000   mov dword ptr fs:,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:
0040B223    |.E8 886C0000      call MP4_Conv.00411EB0
0040B228    |.6A 00            push 0
0040B22A    |.8D4C24 40          lea ecx,dword ptr ss:
0040B22E    |.C78424 B8000000 00>mov dword ptr ss:,0
0040B239    |.E8 42760000      call MP4_Conv.00412880                              ;MD5初始常数
0040B23E    |.8B7E 24            mov edi,dword ptr ds:                     ;注册名->edi
0040B241    |.8D4E 20            lea ecx,dword ptr ds:
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:                     ; |
0040B255    |.E8 76760000      call MP4_Conv.004128D0                              ; \MP4_Conv.004128D0
0040B25A    |.8D4C24 3C          lea ecx,dword ptr ss:                     ;F(注册名)->ascii入栈
0040B25E    |.E8 2D770000      call MP4_Conv.00412990                              ;求MD5
0040B263    |.8B08               mov ecx,dword ptr ds:                        ;Md5码第一段
0040B265    |.894C24 1C          mov dword ptr ss:,ecx                     ;搬运
0040B269    |.8B50 04            mov edx,dword ptr ds:
0040B26C    |.895424 20          mov dword ptr ss:,edx
0040B270    |.8B48 08            mov ecx,dword ptr ds:
0040B273    |.894C24 24          mov dword ptr ss:,ecx
0040B277    |.8D4C24 3C          lea ecx,dword ptr ss:
0040B27B    |.8B50 0C            mov edx,dword ptr ds:
0040B27E    |.8B46 04            mov eax,dword ptr ds:                        ;4次
0040B281    |.50               push eax                                          ;设置第二次计算常数初始值固定值000820BF
0040B282    |.895424 2C          mov dword ptr ss:,edx
0040B286    |.E8 F5750000      call MP4_Conv.00412880                              ;///设置第3次计算所用常数
0040B28B    |.33C0               xor eax,eax
0040B28D    |>8B4C04 1C          /mov ecx,dword ptr ss:
0040B291    |.83C0 04            |add eax,4
0040B294    |.F7D1               |not ecx
0040B296    |.894C04 08          |mov dword ptr ss:,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:
0040B2A5    |>33D2               /xor edx,edx
0040B2A7    |.33C0               |xor eax,eax
0040B2A9    |.8A5434 0C          |mov dl,byte ptr ss:                     ;取反后第一组第一位
0040B2AD    |.8A07               |mov al,byte ptr ds:                           ;取反前第4组第4位
0040B2AF    |.0FAFD0             |imul edx,eax                                       ;逆序相乘
0040B2B2    |.8D4C24 08          |lea ecx,dword ptr ss:
0040B2B6    |.6A 04            |push 4                                             ; /Arg2 = 00000004
0040B2B8    |.51               |push ecx                                           ; |Arg1
0040B2B9    |.8D4C24 44          |lea ecx,dword ptr ss:                      ; |
0040B2BD    |.895424 10          |mov dword ptr ss:,edx                      ; |
0040B2C1    |.E8 0A760000      |call MP4_Conv.004128D0                           ; \此call把乘积作为字符串第二次MD5计算,计算所得四组数字作为常数做第三次Md5计算
0040B2C6    |.8A5424 08          |mov dl,byte ptr ss:
0040B2CA    |.46               |inc esi
0040B2CB    |.8817               |mov byte ptr ds:,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:
0040B2D7    |.E8 B4760000      call MP4_Conv.00412990                              ;第三次Md5计算
0040B2DC    |.8B08               mov ecx,dword ptr ds:                        ;第一段
0040B2DE    |.894C24 2C          mov dword ptr ss:,ecx                     ;搬运
0040B2E2    |.8B50 04            mov edx,dword ptr ds:
0040B2E5    |.895424 30          mov dword ptr ss:,edx
0040B2E9    |.8B48 08            mov ecx,dword ptr ds:
0040B2EC    |.894C24 34          mov dword ptr ss:,ecx
0040B2F0    |.8B50 0C            mov edx,dword ptr ds:
0040B2F3    |.33C0               xor eax,eax
0040B2F5    |.895424 38          mov dword ptr ss:,edx                     ;搬运完毕
0040B2F9    |>8B4C04 2C          mov ecx,dword ptr ss:                   ;第三次 MD5 第一段设为Rb-1
0040B2FD    |.8B7404 1C          mov esi,dword ptr ss:                   ;变幻后的注册名MD5第一段,设为Ra-1
0040B301    |.33CE               xor ecx,esi                                       ;Ra-1 xor Rb-1设为Rc-1
0040B303    |.894C04 0C          mov dword ptr ss:,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:                     ;Rc-3
0040B313    |.8B4424 18          mov eax,dword ptr ss:                     ;Rc-4
0040B317    |.0FAF4C24 10      imul ecx,dword ptr ss:                      ;Rc-3*Rc-2
0040B31C    |.0FAF4424 0C      imul eax,dword ptr ss:                     ;Rc-4*Rc-1
0040B321    |.894C24 10          mov dword ptr ss:,ecx                     ;Rc-3*Rc-2放入Rc-2
0040B325    |.8B5424 12          mov edx,dword ptr ss:
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:
0040B33D    |.894424 10          mov dword ptr ss:,eax                     ;Rc-4*Rc-1放入Rc-1
0040B341    |.51               push ecx                                          ;Rc-2前半段入栈
0040B342    |.8B4C24 16          mov ecx,dword ptr ss:
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,R4,R4,R4。R4*R4&R4*R4得到R5
把R5分为四段,中间加"-"即为注册码
附注:第二次第三次MD5计算某没有演算,因此只是追踪过程中的推测,所以也无从写注册机.
其实还是爆破比较合适,广告窗口,看了就烦!注册完了还有注册按钮!无聊!
删除软件目录中的ur.rtbt即可重新注册。

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

[ 本帖最后由 zaas 于 2009-10-9 19:30 编辑 ]

tianxj 发表于 2009-10-9 20:39:41

我记得好像有网验的/:017 不过很简单哦

zaas 发表于 2009-10-9 21:17:55

/:L明天我找找看。。嘿嘿嘿嘿

等待小金鼠 发表于 2009-10-9 23:05:03

新手,有点看不懂

zjid520 发表于 2009-10-10 19:42:49

好文章,分析得比较详细/鼓掌~~!

zxb121468 发表于 2009-10-11 07:15:45

国产机来电归属地文件

kcr 发表于 2009-10-11 09:54:34

学习一下。

月无影 发表于 2009-10-11 10:04:01

先学习一下为考试奠定基础。

dh0807 发表于 2009-10-14 09:35:55

爆破 找注册码 简单软件应该都可以,初学者,
难就是做个注册机,这个好象得学会编程吧

mseec 发表于 2009-10-14 16:31:36

这个软件很好,给我同学看下,他在用/:014
页: [1] 2
查看完整版本: MP4-RM转换专家豪华版2009算法不完全分析