- UID
- 8198
注册时间2006-2-16
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【破文标题】Open Video Converter 3.0.1.310算法分析+注册机
【破文作者】ZHOU2X
【破解工具】PEID,W32Dasm,Ollydbg
【破解平台】WinXP
【软件名称】Open Video Converter 3.0.1.310
【软件大小】541KB
【原版下载】http://hn.onlinedown.net/soft/27574.htm
【保护方式】注册码
【软件简介】Open Video Converter 是一款易于使用的视频转换,分割和编辑工具.它能转换多个视频格式如MPG, AVI, ASF, WMV到AVI 文件. 它能改变帧尺寸,帧频,视频和音频压缩编码.
主要功能有: -转换MPEG,WMV,ASF,MPG,VCD,OGM,DAT,SVCD为AVI. 支持DIVX,XVID编码. -分割视频文件 -改变帧尺寸,调整视频屏幕高宽比. -通过选择不同编码率改变视频文件大小 -改变
AVI文件的视频和音频压缩编码.
【破解声明】只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】无壳,有提示,OD载入,寻找“registration failed!”,看下面代码
- 00424980 /. 5>push ebp
- 00424981 |. 8>mov ebp,esp
- 00424983 |. 8>sub esp,20
- 00424986 |. 8>mov [local.8],ecx
- 00424989 |. 6>push 1
- 0042498B |. 8>mov ecx,[local.8]
- 0042498E |. E>call 00446D5D ; VideoCon.00446D5D
- 00424993 |. 8>mov ecx,[local.8]
- 00424996 |. 8>add ecx,70
- 00424999 |. E>call 0040BA50 ; VideoCon.0040BA50
- 0042499E |. 8>cmp eax,2 ; 比较注册名长度是否大于等于2
- 004249A1 |. 7>jge short 004249B6 ; VideoCon.004249B6
- 004249A3 |. 6>push 0
- 004249A5 |. 6>push 0
- 004249A7 |. 6>push 46032C ; please input correct user name!
- 004249AC |. E>call 00450B6F ; VideoCon.00450B6F
- 004249B1 |. E>jmp 00424C5F ; VideoCon.00424C5F
- 004249B6 |> 8>mov ecx,[local.8]
- 004249B9 |. 8>add ecx,74
- 004249BC |. E>call 0040BA50 ; VideoCon.0040BA50
- 004249C1 |. 8>cmp eax,8 ; 比较注册码长度是否大于等于8
- 004249C4 |. 7>jge short 004249D9 ; VideoCon.004249D9
- 004249C6 |. 6>push 0
- 004249C8 |. 6>push 0
- 004249CA |. 6>push 46034C ; please input correct registration code!
- 004249CF |. E>call 00450B6F ; VideoCon.00450B6F
- 004249D4 |. E>jmp 00424C5F ; VideoCon.00424C5F
- 004249D9 |> 6>push 0 ; /Arg1 = 00000000
- 004249DB |. 8>mov ecx,[local.8] ; |
- 004249DE |. 8>add ecx,70 ; |
- 004249E1 |. E>call 00423F90 ; \VideoCon.00423F90
- 004249E6 |. 8>mov byte ptr ss:[ebp-11],al
- 004249E9 |. 6>push 1 ; /Arg1 = 00000001
- 004249EB |. 8>mov ecx,[local.8] ; |
- 004249EE |. 8>add ecx,70 ; |
- 004249F1 |. E>call 00423F90 ; \VideoCon.00423F90
- 004249F6 |. 8>mov byte ptr ss:[ebp-8],al
- 004249F9 |. 6>push 0 ; /Arg1 = 00000000
- 004249FB |. 8>mov ecx,[local.8] ; |
- 004249FE |. 8>add ecx,70 ; |
- 00424A01 |. E>call 00423F90 ; \VideoCon.00423F90
- 00424A06 |. 8>mov byte ptr ss:[ebp-1],al
- 00424A09 |. 6>push 1 ; /Arg1 = 00000001
- 00424A0B |. 8>mov ecx,[local.8] ; |
- 00424A0E |. 8>add ecx,70 ; |
- 00424A11 |. E>call 00423F90 ; \VideoCon.00423F90
- 00424A16 |. 8>mov byte ptr ss:[ebp-6],al
- 00424A19 |. 0>movzx eax,byte ptr ss:[ebp-11]
- 00424A1D |. 8>or eax,41 ; 注册名第一位字符ASCCI码值和0x41或运算
- 00424A20 |. 8>mov byte ptr ss:[ebp-11],al
- 00424A23 |. 0>movzx ecx,byte ptr ss:[ebp-8]
- 00424A27 |. 8>or ecx,56 ; 注册名第二位字符ASCCI码值和0x56或运算
- 00424A2A |. 8>mov byte ptr ss:[ebp-8],cl
- 00424A2D |. 0>movzx edx,byte ptr ss:[ebp-1]
- 00424A31 |. 8>or edx,49 ; 注册名第一位字符ASCCI码值和0x49或运算
- 00424A34 |. 8>mov byte ptr ss:[ebp-1],dl
- 00424A37 |. 0>movzx eax,byte ptr ss:[ebp-6]
- 00424A3B |. 8>or eax,43 ; 注册名第二位字符ASCCI码值和0x43或运算
- 00424A3E |. 8>mov byte ptr ss:[ebp-6],al
- 00424A41 |. 0>movzx eax,byte ptr ss:[ebp-11]
- 00424A45 |. 9>cdq
- 00424A46 |. B>mov ecx,0A
- 00424A4B |. F>idiv ecx ; 注册名第一位字符第一次或运算结果除以0x0A
- 00424A4D |. 8>mov byte ptr ss:[ebp-11],dl ; 保存余数①
- 00424A50 |. 0>movzx eax,byte ptr ss:[ebp-8]
- 00424A54 |. 9>cdq
- 00424A55 |. B>mov ecx,0A
- 00424A5A |. F>idiv ecx ; 注册名第二位字符第一次或运算结果除以0x0A
- 00424A5C |. 8>mov byte ptr ss:[ebp-8],dl ; 保存余数②
- 00424A5F |. 0>movzx eax,byte ptr ss:[ebp-1]
- 00424A63 |. 9>cdq
- 00424A64 |. B>mov ecx,0A
- 00424A69 |. F>idiv ecx ; 注册名第一位字符第二次或运算结果除以0x0A
- 00424A6B |. 8>mov byte ptr ss:[ebp-1],dl ; 保存余数③
- 00424A6E |. 0>movzx eax,byte ptr ss:[ebp-6]
- 00424A72 |. 9>cdq
- 00424A73 |. B>mov ecx,0A
- 00424A78 |. F>idiv ecx ; 注册名第二位字符第二次或运算结果除以0x0A
- 00424A7A |. 8>mov byte ptr ss:[ebp-6],dl ; 保存余数④
- 00424A7D |. C>mov [local.4],0
- 00424A84 |. C>mov [local.6],0
- 00424A8B |. E>jmp short 00424A96 ; VideoCon.00424A96
- 00424A8D |> 8>/mov edx,[local.6]
- 00424A90 |. 8>|add edx,1
- 00424A93 |. 8>|mov [local.6],edx
- 00424A96 |> 8> mov ecx,[local.8]
- 00424A99 |. 8>|add ecx,70
- 00424A9C |. E>|call 0040BA50 ; VideoCon.0040BA50
- 00424AA1 |. 3>|cmp [local.6],eax
- 00424AA4 |. 7>|jge short 00424AC4 ; VideoCon.00424AC4
- 00424AA6 |. 8>|mov eax,[local.6]
- 00424AA9 |. 5>|push eax ; /Arg1
- 00424AAA |. 8>|mov ecx,[local.8] ; |
- 00424AAD |. 8>|add ecx,70 ; |
- 00424AB0 |. E>|call 00423F90 ; \VideoCon.00423F90
- 00424AB5 |. 8>|mov byte ptr ss:[ebp-19],al
- 00424AB8 |. 0>|movzx ecx,byte ptr ss:[ebp-19]
- 00424ABC |. 0>|add ecx,[local.4]
- 00424ABF |. 8>|mov [local.4],ecx
- 00424AC2 |.^ E>\jmp short 00424A8D ; VideoCon.00424A8D
- 00424AC4 |> 8>mov eax,[local.4] ; 注册名ASCCI码值和
- 00424AC7 |. 9>cdq
- 00424AC8 |. B>mov ecx,0A
- 00424ACD |. F>idiv ecx
- 00424ACF |. 8>mov byte ptr ss:[ebp-C],dl 注册名ASCCI码值之和除以0x0A, 保存余数⑤
- 00424AD2 |. 6>push 0 ; /Arg1 = 00000000
- 00424AD4 |. 8>mov ecx,[local.8] ; |
- 00424AD7 |. 8>add ecx,74 ; |
- 00424ADA |. E>call 00423F90 ; \VideoCon.00423F90
- 00424ADF |. 8>mov byte ptr ss:[ebp-4],al
- 00424AE2 |. 6>push 1 ; /Arg1 = 00000001
- 00424AE4 |. 8>mov ecx,[local.8] ; |
- 00424AE7 |. 8>add ecx,74 ; |
- 00424AEA |. E>call 00423F90 ; \VideoCon.00423F90
- 00424AEF |. 8>mov byte ptr ss:[ebp-3],al
- 00424AF2 |. 6>push 2 ; /Arg1 = 00000002
- 00424AF4 |. 8>mov ecx,[local.8] ; |
- 00424AF7 |. 8>add ecx,74 ; |
- 00424AFA |. E>call 00423F90 ; \VideoCon.00423F90
- 00424AFF |. 8>mov byte ptr ss:[ebp-A],al
- 00424B02 |. 6>push 3 ; /Arg1 = 00000003
- 00424B04 |. 8>mov ecx,[local.8] ; |
- 00424B07 |. 8>add ecx,74 ; |
- 00424B0A |. E>call 00423F90 ; \VideoCon.00423F90
- 00424B0F |. 8>mov byte ptr ss:[ebp-B],al
- 00424B12 |. 6>push 4 ; /Arg1 = 00000004
- 00424B14 |. 8>mov ecx,[local.8] ; |
- 00424B17 |. 8>add ecx,74 ; |
- 00424B1A |. E>call 00423F90 ; \VideoCon.00423F90
- 00424B1F |. 8>mov byte ptr ss:[ebp-7],al
- 00424B22 |. 6>push 5 ; /Arg1 = 00000005
- 00424B24 |. 8>mov ecx,[local.8] ; |
- 00424B27 |. 8>add ecx,74 ; |
- 00424B2A |. E>call 00423F90 ; \VideoCon.00423F90
- 00424B2F |. 8>mov byte ptr ss:[ebp-9],al
- 00424B32 |. 6>push 6 ; /Arg1 = 00000006
- 00424B34 |. 8>mov ecx,[local.8] ; |
- 00424B37 |. 8>add ecx,74 ; |
- 00424B3A |. E>call 00423F90 ; \VideoCon.00423F90
- 00424B3F |. 8>mov byte ptr ss:[ebp-2],al
- 00424B42 |. 6>push 7 ; /Arg1 = 00000007
- 00424B44 |. 8>mov ecx,[local.8] ; |
- 00424B47 |. 8>add ecx,74 ; |
- 00424B4A |. E>call 00423F90 ; \VideoCon.00423F90
- 00424B4F |. 8>mov byte ptr ss:[ebp-5],al
- 00424B52 |. 0>movzx edx,byte ptr ss:[ebp-11] ; 余数①
- 00424B56 |. 0>movzx eax,byte ptr ss:[ebp-4] ; 注册码第一位ASCCI码值
- 00424B5A |. 8>sub eax,30 ; 注册码第一位ASCCI码值减0x30
- 00424B5D |. 3>cmp edx,eax
- 00424B5F |. 7>jnz short 00424B9D ; 不等,跳
- 00424B61 |. 0>movzx ecx,byte ptr ss:[ebp-8] ; 余数②
- 00424B65 |. 0>movzx edx,byte ptr ss:[ebp-3] ; 注册码第二位ASCCI码值
- 00424B69 |. 8>sub edx,30 ; 注册码第二位ASCCI码值减0x30
- 00424B6C |. 3>cmp ecx,edx
- 00424B6E |. 7>jnz short 00424B9D ; 不等,跳
- 00424B70 |. 0>movzx eax,byte ptr ss:[ebp-1] ; 余数③
- 00424B74 |. 0>movzx ecx,byte ptr ss:[ebp-A] ; 注册码第三位ASCCI码值
- 00424B78 |. 8>sub ecx,30 ; 注册码第三位ASCCI码值减0x30
- 00424B7B |. 3>cmp eax,ecx
- 00424B7D |. 7>jnz short 00424B9D ; 不等,跳
- 00424B7F |. 0>movzx edx,byte ptr ss:[ebp-6] ; 余数④
- 00424B83 |. 0>movzx eax,byte ptr ss:[ebp-B] ; 注册码第四位ASCCI码值
- 00424B87 |. 8>sub eax,30 ; 注册码第四位ASCCI码值减0x30
- 00424B8A |. 3>cmp edx,eax
- 00424B8C |. 7>jnz short 00424B9D ; 不等,跳
- 00424B8E |. 0>movzx ecx,byte ptr ss:[ebp-C] ; 余数⑤
- 00424B92 |. 0>movzx edx,byte ptr ss:[ebp-7] ; 注册码第五位ASCCI码值
- 00424B96 |. 8>sub edx,30 ; 注册码第五位ASCCI码值减0x30
- 00424B99 |. 3>cmp ecx,edx
- 00424B9B |. 7>je short 00424BF5 ; 相等,跳(注册成功)
- 00424B9D |> 0>movzx eax,byte ptr ss:[ebp-4]
- 00424BA1 |. 8>cmp eax,35 ; 5 (通用注册码 51897629)
- 00424BA4 |. 0>jnz 00424C51 ; 不等,跳(注册失败)
- 00424BAA |. 0>movzx ecx,byte ptr ss:[ebp-3]
- 00424BAE |. 8>cmp ecx,31 ; 1
- 00424BB1 |. 0>jnz 00424C51 ; 不等,跳
- 00424BB7 |. 0>movzx edx,byte ptr ss:[ebp-A]
- 00424BBB |. 8>cmp edx,38 ; 8
- 00424BBE |. 0>jnz 00424C51 ; 不等,跳
- 00424BC4 |. 0>movzx eax,byte ptr ss:[ebp-B]
- 00424BC8 |. 8>cmp eax,39 ; 9
- 00424BCB |. 0>jnz 00424C51 ; 不等,跳
- 00424BD1 |. 0>movzx ecx,byte ptr ss:[ebp-7]
- 00424BD5 |. 8>cmp ecx,37 ; 7
- 00424BD8 |. 7>jnz short 00424C51 ; 不等,跳
- 00424BDA |. 0>movzx edx,byte ptr ss:[ebp-9]
- 00424BDE |. 8>cmp edx,36 ; 6
- 00424BE1 |. 7>jnz short 00424C51 ; 不等,跳
- 00424BE3 |. 0>movzx eax,byte ptr ss:[ebp-2]
- 00424BE7 |. 8>cmp eax,32 ; 2
- 00424BEA |. 7>jnz short 00424C51 ; 不等,跳
- 00424BEC |. 0>movzx ecx,byte ptr ss:[ebp-5]
- 00424BF0 |. 8>cmp ecx,39 ; 9
- 00424BF3 |. 7>jnz short 00424C51 ; 不等,跳
- 00424BF5 |> 6>push 0
- 00424BF7 |. 6>push 0
- 00424BF9 |. 6>push 460374 ; registration has succeeded!
- 00424BFE |. E>call 00450B6F ; VideoCon.00450B6F
- 00424C03 |. 8>mov ecx,[local.8]
- 00424C06 |. 8>add ecx,70
- 00424C09 |. E>call 00424070 ; VideoCon.00424070
- 00424C0E |. 5>push eax
- 00424C0F |. 6>push 460390 ; username
- 00424C14 |. 6>push 46039C ; option
- 00424C19 |. E>call 0040E1C0 ; VideoCon.0040E1C0
- 00424C1E |. 8>mov ecx,eax ; |
- 00424C20 |. E>call 004508CF ; \VideoCon.004508CF
- 00424C25 |. 8>mov ecx,[local.8]
- 00424C28 |. 8>add ecx,74
- 00424C2B |. E>call 00424070 ; VideoCon.00424070
- 00424C30 |. 5>push eax
- 00424C31 |. 6>push 4603A4 ; registration_code
- 00424C36 |. 6>push 4603B8 ; option
- 00424C3B |. E>call 0040E1C0 ; VideoCon.0040E1C0
- 00424C40 |. 8>mov ecx,eax ; |
- 00424C42 |. E>call 004508CF ; \VideoCon.004508CF
- 00424C47 |. 8>mov ecx,[local.8]
- 00424C4A |. E>call 0044AED6 ; VideoCon.0044AED6
- 00424C4F |. E>jmp short 00424C5F ; VideoCon.00424C5F
- 00424C51 |> 6>push 0
- 00424C53 |. 6>push 0
- 00424C55 |. 6>push 4603C0 ; registration failed!
- 00424C5A |. E>call 00450B6F ; VideoCon.00450B6F
- 00424C5F |> 8>mov esp,ebp
- 00424C61 |. 5>pop ebp
- 00424C62 \. C>retn
复制代码
------------------------------------------------------------------------
【破解总结】做注册机,易语言源码
- .版本 2
- .局部变量 name, 文本型
- .局部变量 i, 整数型
- .局部变量 lenn, 整数型
- .局部变量 code1, 字节型
- .局部变量 code4, 整数型
- .局部变量 code3, 文本型
- .局部变量 code2, 字节型
- name = 编辑框1.内容
- lenn = 取文本长度 (name)
- .判断开始 (lenn < 2) ' lenn=0 或 lenm=0
- 编辑框3.内容 = “★注册名必须2位以上★”
- .默认
- .计次循环首 (lenn, i)
- code1 = 取代码 (name, i)
- code4 = code1 + code4
- .计次循环尾 ()
- code1 = 取代码 (name, 1)
- code2 = 取代码 (name, 2)
- code3 = code3 + 到文本 (位或 (code1, 65) % 10) + 到文本 (位或 (code2, 86) % 10) + 到文本 (位或 (code1, 73) % 10) + 到文本 (位或 (code2, 67) % 10)
- 置随机数种子 ()
- 编辑框3.内容 = code3 + 到文本 (code4 % 10) + 到文本 (取随机数 (100, 999))
- .判断结束
复制代码
------------------------------------------------------------------------
【版权声明】本文由 ZHOU2X 原创, 转载请注明作者并保持文章的完整, 谢谢! |
|