【破解作者】 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
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界