首页
社区
课程
招聘
[原创]Audio To Video Mixer 3.0简单算法分析
发表于: 2005-6-25 04:14 6312

[原创]Audio To Video Mixer 3.0简单算法分析

2005-6-25 04:14
6312

【破解作者】 zmw1224[CZG][DFCG]
【作者邮箱】 zmw1224@yahoo.com.cn
【使用工具】 OD
【破解平台】 win2003
【软件名称】 Audio To Video Mixer 3.0
【下载地址】 http://www.onlinedown.net/soft/39614.htm
【软件简介】 Audio to Video Mixer是一款视频编辑工具,用于将音频文件混合入视频中。它能够将你的家庭视频的原音消除,加入背景音乐,解说或更多的音轨。

【软件大小】 697KB
【加壳方式】 无
【破解声明】 本笔记只用于学习交流, 初学Crack,只是感兴趣技术,没有其他目的, 如有不妥之处, 希望作者谅解.
--------------------------------------------------------------------------------
【破解内容】

查壳无,OD载入,查找字符串,快速的上下翻了下,看见了重要信息--------> "Please input correct User Name!"
双击来到下面:
输入相关信息:
用户名:zmw1224
注册码:123567890

确定后马上被断:
004169F3    .  55               push ebp                       ;在这下断
004169F4    .  56               push esi
004169F5    .  57               push edi
004169F6    .  BF 01000000      mov edi,1
004169FB    .  57               push edi
004169FC    .  8BF1             mov esi,ecx
004169FE    .  E8 BDB40100      call a2vmixer.00431EC0
00416A03    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A06    .  8B68 F4          mov ebp,dword ptr ds:[eax-C]
00416A09    .  83FD 02          cmp ebp,2                       ;  用户名必须大于2位
00416A0C    .  7D 15            jge short a2vmixer.00416A23
00416A0E    .  6A 00            push 0
00416A10    .  6A 00            push 0
00416A12    .  68 DC874400      push a2vmixer.004487DC          ;  ASCII "Please input correct User Name!"
00416A17    .  E8 A4510200      call a2vmixer.0043BBC0
00416A1C    .  5F               pop edi
00416A1D    .  5E               pop esi
00416A1E    .  5D               pop ebp
00416A1F    .  83C4 0C          add esp,0C
00416A22    .  C3               retn
00416A23    >  8B4E 74          mov ecx,dword ptr ds:[esi+74]
00416A26    .  8379 F4 08       cmp dword ptr ds:[ecx-C],8      ;  注册码必须大于8位(其实注册判断只是前5位起做用,后面的N位无关紧要随意输,这是分析完注册算法后得出的结果。)
00416A2A    .  7D 15            jge short a2vmixer.00416A41
00416A2C    .  6A 00            push 0
00416A2E    .  6A 00            push 0
00416A30    .  68 B4874400      push a2vmixer.004487B4          ;  ASCII "Please input correct Registration Code!"
00416A35    .  E8 86510200      call a2vmixer.0043BBC0
00416A3A    .  5F               pop edi
00416A3B    .  5E               pop esi
00416A3C    .  5D               pop ebp
00416A3D    .  83C4 0C          add esp,0C
00416A40    .  C3               retn
00416A41    >  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A44    .  8B48 F4          mov ecx,dword ptr ds:[eax-C]
00416A47    .  85C9             test ecx,ecx
00416A49    .  7D 0A            jge short a2vmixer.00416A55
00416A4B    .  68 57000780      push 80070057
00416A50    .  E8 ABA8FEFF      call a2vmixer.00401300
00416A55    >  8A10             mov dl,byte ptr ds:[eax]
00416A57    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A5A    .  3978 F4          cmp dword ptr ds:[eax-C],edi
00416A5D    .  7D 0A            jge short a2vmixer.00416A69
00416A5F    .  68 57000780      push 80070057
00416A64    .  E8 97A8FEFF      call a2vmixer.00401300
00416A69    >  8A40 01          mov al,byte ptr ds:[eax+1]
00416A6C    .  884424 0E        mov byte ptr ss:[esp+E],al
00416A70    .  8B46 70          mov eax,dword ptr ds:[esi+70]
00416A73    .  8B48 F4          mov ecx,dword ptr ds:[eax-C]
00416A76    .  85C9             test ecx,ecx
00416A78    .  7D 0A            jge short a2vmixer.00416A84
00416A7A    .  68 57000780      push 80070057
00416A7F    .  E8 7CA8FEFF      call a2vmixer.00401300
00416A84    >  8B4E 70          mov ecx,dword ptr ds:[esi+70]
00416A87    .  53               push ebx
00416A88    .  8A18             mov bl,byte ptr ds:[eax]
00416A8A    .  3979 F4          cmp dword ptr ds:[ecx-C],edi
00416A8D    .  7D 0A            jge short a2vmixer.00416A99
00416A8F    .  68 57000780      push 80070057
00416A94    .  E8 67A8FEFF      call a2vmixer.00401300
00416A99    >  0FB6C2           movzx eax,dl                    ;  第一个字符(z)送到EAX里。
00416A9C    .  83C8 41          or eax,41                       ;  EAX=EAX or 0x41
00416A9F    .  99               cdq
00416AA0    .  BF 0A000000      mov edi,0A
00416AA5    .  F7FF             idiv edi                        ;  EAX=EAX/EDI(0A),余数在EDX里,EDX=3
00416AA7    .  0FB64424 12      movzx eax,byte ptr ss:[esp+12]  ;  第二个字符(m)送到EAX里
00416AAC    .  83C8 32          or eax,32                       ;  EAX=EAX or 0x32
00416AAF    .  885424 16        mov byte ptr ss:[esp+16],dl     ;  把第一次算的余数先保存起来。
00416AB3    .  99               cdq
00416AB4    .  F7FF             idiv edi                        ;  (EDI里的值一直没变,一直都是除以A)EAX=EAX/EDI(0A),余数在EDX里,EDX=7
00416AB6    .  0FB6C3           movzx eax,bl                    ;  再次把第一个字符(z)送到EAX里,EAX=7A
00416AB9    .  83C8 56          or eax,56                       ;  EAX=EAX or 0x56
00416ABC    .  885424 12        mov byte ptr ss:[esp+12],dl     ;  把第二次算的余数先保存起来。
00416AC0    .  99               cdq
00416AC1    .  F7FF             idiv edi                        ;  EAX=EAX/EDI(0A),余数在EDX里,EDX=6
00416AC3    .  0FB641 01        movzx eax,byte ptr ds:[ecx+1]   ;  再次把第二个字符(m)送到EAX里,EAX=6D
00416AC7    .  83C8 4D          or eax,4D                       ;  EAX=EAX or 0x4D
00416ACA    .  8BCF             mov ecx,edi
00416ACC    .  885424 17        mov byte ptr ss:[esp+17],dl     ;  把第三次算的余数先保存起来。
00416AD0    .  99               cdq
00416AD1    .  F7F9             idiv ecx                        ;  EAX=EAX/ECX(0A),余数在EDX里,EDX=9
00416AD3    .  33C0             xor eax,eax                     ;  EAX清0
00416AD5    .  33C9             xor ecx,ecx                     ;  ECX清0
00416AD7    .  85ED             test ebp,ebp
00416AD9    .  885424 18        mov byte ptr ss:[esp+18],dl     ;  把第四次算的余数先保存起来。(四次的余数,分别为3、7、6、9)
00416ADD    .  7E 20            jle short a2vmixer.00416AFF
00416ADF    .  90               nop
00416AE0    >  85C9             test ecx,ecx
00416AE2    .  0F8C D2000000    jl a2vmixer.00416BBA
00416AE8    .  8B7E 70          mov edi,dword ptr ds:[esi+70]
00416AEB    .  3B4F F4          cmp ecx,dword ptr ds:[edi-C]
00416AEE    .  0F8F C6000000    jg a2vmixer.00416BBA
00416AF4    .  0FB6140F         movzx edx,byte ptr ds:[edi+ecx] ;  这部分是累加用名用的ASCii值
00416AF8    .  03C2             add eax,edx
00416AFA    .  41               inc ecx                         ;  即zmw1224---->EAX=0x227
00416AFB    .  3BCD             cmp ecx,ebp
00416AFD    .^ 7C E1            jl short a2vmixer.00416AE0
00416AFF    >  8B4E 74          mov ecx,dword ptr ds:[esi+74]   ;  假注册码送到ECX里,ECX=123456789
00416B02    .  8B51 F4          mov edx,dword ptr ds:[ecx-C]
00416B05    .  85D2             test edx,edx
00416B07    .  7D 0A            jge short a2vmixer.00416B13
00416B09    .  68 57000780      push 80070057
00416B0E    .  E8 EDA7FEFF      call a2vmixer.00401300
00416B13    >  8A11             mov dl,byte ptr ds:[ecx]
00416B15    .  8B4E 74          mov ecx,dword ptr ds:[esi+74]
00416B18    .  8379 F4 01       cmp dword ptr ds:[ecx-C],1
00416B1C    .  885424 19        mov byte ptr ss:[esp+19],dl
00416B20    .  7D 0A            jge short a2vmixer.00416B2C
00416B22    .  68 57000780      push 80070057
00416B27    .  E8 D4A7FEFF      call a2vmixer.00401300
00416B2C    >  8A49 01          mov cl,byte ptr ds:[ecx+1]
00416B2F    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B32    .  884C24 13        mov byte ptr ss:[esp+13],cl
00416B36    .  837F F4 02       cmp dword ptr ds:[edi-C],2
00416B3A    .  7D 0A            jge short a2vmixer.00416B46
00416B3C    .  68 57000780      push 80070057
00416B41    .  E8 BAA7FEFF      call a2vmixer.00401300
00416B46    >  8A4F 02          mov cl,byte ptr ds:[edi+2]
00416B49    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B4C    .  884C24 14        mov byte ptr ss:[esp+14],cl
00416B50    .  837F F4 03       cmp dword ptr ds:[edi-C],3
00416B54    .  7D 0A            jge short a2vmixer.00416B60
00416B56    .  68 57000780      push 80070057
00416B5B    .  E8 A0A7FEFF      call a2vmixer.00401300
00416B60    >  8A4F 03          mov cl,byte ptr ds:[edi+3]
00416B63    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B66    .  884C24 15        mov byte ptr ss:[esp+15],cl
00416B6A    .  837F F4 04       cmp dword ptr ds:[edi-C],4
00416B6E    .  7D 0A            jge short a2vmixer.00416B7A
00416B70    .  68 57000780      push 80070057
00416B75    .  E8 86A7FEFF      call a2vmixer.00401300
00416B7A    >  8A4F 04          mov cl,byte ptr ds:[edi+4]
00416B7D    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B80    .  837F F4 05       cmp dword ptr ds:[edi-C],5
00416B84    .  7D 0A            jge short a2vmixer.00416B90
00416B86    .  68 57000780      push 80070057
00416B8B    .  E8 70A7FEFF      call a2vmixer.00401300
00416B90    >  8A5F 05          mov bl,byte ptr ds:[edi+5]
00416B93    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416B96    .  885C24 1A        mov byte ptr ss:[esp+1A],bl
00416B9A    .  837F F4 06       cmp dword ptr ds:[edi-C],6
00416B9E    .  7D 0A            jge short a2vmixer.00416BAA
00416BA0    .  68 57000780      push 80070057
00416BA5    .  E8 56A7FEFF      call a2vmixer.00401300
00416BAA    >  8A5F 06          mov bl,byte ptr ds:[edi+6]
00416BAD    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416BB0    .  885C24 1B        mov byte ptr ss:[esp+1B],bl
00416BB4    .  837F F4 07       cmp dword ptr ds:[edi-C],7
00416BB8    .  7D 0A            jge short a2vmixer.00416BC4
00416BBA    >  68 57000780      push 80070057
00416BBF    .  E8 3CA7FEFF      call a2vmixer.00401300
00416BC4    >  8A5F 07          mov bl,byte ptr ds:[edi+7]
00416BC7    .  0FB67C24 16      movzx edi,byte ptr ss:[esp+16]
00416BCC    .  0FB6D2           movzx edx,dl
00416BCF    .  83EA 30          sub edx,30
00416BD2    .  3BFA             cmp edi,edx
00416BD4    .  75 48            jnz short a2vmixer.00416C1E
00416BD6    .  0FB65424 13      movzx edx,byte ptr ss:[esp+13]
00416BDB    .  0FB67C24 12      movzx edi,byte ptr ss:[esp+12]
00416BE0    .  83EA 30          sub edx,30
00416BE3    .  3BFA             cmp edi,edx
00416BE5    .  75 37            jnz short a2vmixer.00416C1E     ;  这部分的四个跳转JNZ是判断注册码的前四前是否是3、7、6、9
00416BE7    .  0FB65424 14      movzx edx,byte ptr ss:[esp+14]
00416BEC    .  0FB67C24 17      movzx edi,byte ptr ss:[esp+17]
00416BF1    .  83EA 30          sub edx,30
00416BF4    .  3BFA             cmp edi,edx
00416BF6    .  75 26            jnz short a2vmixer.00416C1E
00416BF8    .  0FB65424 15      movzx edx,byte ptr ss:[esp+15]
00416BFD    .  0FB67C24 18      movzx edi,byte ptr ss:[esp+18]
00416C02    .  83EA 30          sub edx,30
00416C05    .  3BFA             cmp edi,edx
00416C07    .  75 15            jnz short a2vmixer.00416C1E
00416C09    .  99               cdq
00416C0A    .  BF 0A000000      mov edi,0A                      ;  如果上面四个余数正确的话,我们就快成功了,继续往下走吧!
00416C0F    .  F7FF             idiv edi                        ;  这里是用户名的ASCii累加值除以A,EAX=0x227/A,余数在EDX里,EDX=1
00416C11    .  0FB6C2           movzx eax,dl                    ;  余数1,送到EAX里,EAX=1
00416C14    .  0FB6D1           movzx edx,cl                    ;  判断我们假注册码的第五位数,是否为余数1,不是就OVER了
00416C17    .  83EA 30          sub edx,30
00416C1A    .  3BC2             cmp eax,edx
00416C1C    .  74 3A            je short a2vmixer.00416C58      ;  相等的话就注册成功了! 虽然要满足8位注册码,但只有前5位起作用,后面N位无关紧要。
00416C1E    >  807C24 19 31     cmp byte ptr ss:[esp+19],31
00416C23    .  0F85 85000000    jnz a2vmixer.00416CAE
00416C29    .  807C24 13 32     cmp byte ptr ss:[esp+13],32
00416C2E    .  75 7E            jnz short a2vmixer.00416CAE
00416C30    .  8A5424 14        mov dl,byte ptr ss:[esp+14]
00416C34    .  B0 38            mov al,38
00416C36    .  3AD0             cmp dl,al
00416C38    .  75 74            jnz short a2vmixer.00416CAE
00416C3A    .  807C24 15 30     cmp byte ptr ss:[esp+15],30
00416C3F    .  75 6D            jnz short a2vmixer.00416CAE
00416C41    .  80F9 37          cmp cl,37
00416C44    .  75 68            jnz short a2vmixer.00416CAE
00416C46    .  384424 1A        cmp byte ptr ss:[esp+1A],al
00416C4A    .  75 62            jnz short a2vmixer.00416CAE
00416C4C    .  807C24 1B 33     cmp byte ptr ss:[esp+1B],33
00416C51    .  75 5B            jnz short a2vmixer.00416CAE
00416C53    .  80FB 35          cmp bl,35
00416C56    .  75 56            jnz short a2vmixer.00416CAE
00416C58    >  6A 00            push 0
00416C5A    .  6A 00            push 0                          ;  注册成功对话框,然后把注册码写到注册表里。
00416C5C    .  68 98874400      push a2vmixer.00448798          ;  ASCII "Registration has succeeded!"
00416C61    .  E8 5A4F0200      call a2vmixer.0043BBC0
00416C66    .  8B7E 70          mov edi,dword ptr ds:[esi+70]
00416C69    .  E8 3B8E0200      call a2vmixer.0043FAA9
00416C6E    .  8B40 04          mov eax,dword ptr ds:[eax+4]
00416C71    .  57               push edi                        ; /Arg3
00416C72    .  68 547C4400      push a2vmixer.00447C54          ; |Arg2 = 00447C54 ASCII "username"
00416C77    .  68 4C7C4400      push a2vmixer.00447C4C          ; |Arg1 = 00447C4C ASCII "Option"
00416C7C    .  8BC8             mov ecx,eax                     ; |
00416C7E    .  E8 43500200      call a2vmixer.0043BCC6          ; \a2vmixer.0043BCC6
00416C83    .  8B7E 74          mov edi,dword ptr ds:[esi+74]
00416C86    .  E8 1E8E0200      call a2vmixer.0043FAA9
00416C8B    .  8B40 04          mov eax,dword ptr ds:[eax+4]
00416C8E    .  57               push edi                        ; /Arg3
00416C8F    .  68 387C4400      push a2vmixer.00447C38          ; |Arg2 = 00447C38 ASCII "registration_code"
00416C94    .  68 4C7C4400      push a2vmixer.00447C4C          ; |Arg1 = 00447C4C ASCII "Option"
00416C99    .  8BC8             mov ecx,eax                     ; |
00416C9B    .  E8 26500200      call a2vmixer.0043BCC6          ; \a2vmixer.0043BCC6
00416CA0    .  5B               pop ebx
00416CA1    .  5F               pop edi
00416CA2    .  8BCE             mov ecx,esi
00416CA4    .  5E               pop esi
00416CA5    .  5D               pop ebp
00416CA6    .  83C4 0C          add esp,0C
00416CA9    .  E9 A4F10100      jmp a2vmixer.00435E52
00416CAE    >  6A 00            push 0
00416CB0    .  6A 00            push 0                          ;  错误对话框!
00416CB2    .  68 80874400      push a2vmixer.00448780          ;  ASCII "Registration failed!"
00416CB7    .  E8 044F0200      call a2vmixer.0043BBC0
00416CBC    .  5B               pop ebx
00416CBD    .  5F               pop edi
00416CBE    .  5E               pop esi
00416CBF    .  5D               pop ebp
00416CC0    .  83C4 0C          add esp,0C
00416CC3    .  C3               retn

--------------------------------------------------------------------------------
【破解总结】

注册码和用户名有关,注册码必须不小于8位,8位里只有前5位起作用,后面N位无关紧要!
--------------------------------------------------------------------------------

【算法注册机】

#include <stdio.h>

int main()
{ int i,n,n1,n2,n3,n4,n5=0;
  char name[255]={0};

printf("Crack by zmw1224[CZG][DFCG]\n");
printf("___________________________\n");
printf("请输入你的用户名(用户名大于2位):");
scanf("%s",&name);

n=strlen(name);

for (i=0;i<n;i++)
    n5+=name[i];
      n5%=0xA;

n1=name[0]|0x41;
n1%=0xA;

n2=name[1]|0x32;
n2%=0xA;

n3=name[0]|0x56;
n3%=0xA;

n4=name[1]|0x4D;
n4%=0xA;

printf("你的注册码是:%d%d%d%d%d888",n1,n2,n3,n4,n5);

return 0;
}
--------------------------------------------------------------------------------

【用户名、密码】

用户名:zmw1224
注册码:37691888
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
2
终于坐到兄弟的沙发了~~~
2005-6-25 04:36
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
3
支持,
2005-6-25 04:53
0
游客
登录 | 注册 方可回帖
返回
//