ZHOU2X 发表于 2006-11-15 16:58:41

Open Video Converter 3.0.1.310算法分析+注册机

【破文标题】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 ,ecx
00424989|.6>push 1
0042498B|.8>mov ecx,
0042498E|.E>call 00446D5D                        ;VideoCon.00446D5D
00424993|.8>mov ecx,
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,
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,                  ; |
004249DE|.8>add ecx,70                           ; |
004249E1|.E>call 00423F90                        ; \VideoCon.00423F90
004249E6|.8>mov byte ptr ss:,al
004249E9|.6>push 1                               ; /Arg1 = 00000001
004249EB|.8>mov ecx,                  ; |
004249EE|.8>add ecx,70                           ; |
004249F1|.E>call 00423F90                        ; \VideoCon.00423F90
004249F6|.8>mov byte ptr ss:,al
004249F9|.6>push 0                               ; /Arg1 = 00000000
004249FB|.8>mov ecx,                  ; |
004249FE|.8>add ecx,70                           ; |
00424A01|.E>call 00423F90                        ; \VideoCon.00423F90
00424A06|.8>mov byte ptr ss:,al
00424A09|.6>push 1                               ; /Arg1 = 00000001
00424A0B|.8>mov ecx,                  ; |
00424A0E|.8>add ecx,70                           ; |
00424A11|.E>call 00423F90                        ; \VideoCon.00423F90
00424A16|.8>mov byte ptr ss:,al
00424A19|.0>movzx eax,byte ptr ss:
00424A1D|.8>or eax,41                            ;注册名第一位字符ASCCI码值和0x41或运算
00424A20|.8>mov byte ptr ss:,al
00424A23|.0>movzx ecx,byte ptr ss:
00424A27|.8>or ecx,56                            ;注册名第二位字符ASCCI码值和0x56或运算
00424A2A|.8>mov byte ptr ss:,cl
00424A2D|.0>movzx edx,byte ptr ss:
00424A31|.8>or edx,49                            ;注册名第一位字符ASCCI码值和0x49或运算
00424A34|.8>mov byte ptr ss:,dl
00424A37|.0>movzx eax,byte ptr ss:
00424A3B|.8>or eax,43                            ;注册名第二位字符ASCCI码值和0x43或运算
00424A3E|.8>mov byte ptr ss:,al
00424A41|.0>movzx eax,byte ptr ss:
00424A45|.9>cdq
00424A46|.B>mov ecx,0A
00424A4B|.F>idiv ecx                           ;注册名第一位字符第一次或运算结果除以0x0A
00424A4D|.8>mov byte ptr ss:,dl          ;保存余数①
00424A50|.0>movzx eax,byte ptr ss:
00424A54|.9>cdq
00424A55|.B>mov ecx,0A
00424A5A|.F>idiv ecx                           ;注册名第二位字符第一次或运算结果除以0x0A
00424A5C|.8>mov byte ptr ss:,dl         ;保存余数②
00424A5F|.0>movzx eax,byte ptr ss:
00424A63|.9>cdq
00424A64|.B>mov ecx,0A
00424A69|.F>idiv ecx                           ;注册名第一位字符第二次或运算结果除以0x0A
00424A6B|.8>mov byte ptr ss:,dl         ;保存余数③
00424A6E|.0>movzx eax,byte ptr ss:
00424A72|.9>cdq
00424A73|.B>mov ecx,0A
00424A78|.F>idiv ecx                           ;注册名第二位字符第二次或运算结果除以0x0A
00424A7A|.8>mov byte ptr ss:,dl         ;保存余数④
00424A7D|.C>mov ,0
00424A84|.C>mov ,0
00424A8B|.E>jmp short 00424A96                   ;VideoCon.00424A96
00424A8D|>8>/mov edx,
00424A90|.8>|add edx,1
00424A93|.8>|mov ,edx
00424A96|>8> mov ecx,
00424A99|.8>|add ecx,70
00424A9C|.E>|call 0040BA50                     ;VideoCon.0040BA50
00424AA1|.3>|cmp ,eax
00424AA4|.7>|jge short 00424AC4                  ;VideoCon.00424AC4
00424AA6|.8>|mov eax,
00424AA9|.5>|push eax                            ; /Arg1
00424AAA|.8>|mov ecx,                   ; |
00424AAD|.8>|add ecx,70                        ; |
00424AB0|.E>|call 00423F90                     ; \VideoCon.00423F90
00424AB5|.8>|mov byte ptr ss:,al
00424AB8|.0>|movzx ecx,byte ptr ss:
00424ABC|.0>|add ecx,
00424ABF|.8>|mov ,ecx
00424AC2|.^ E>\jmp short 00424A8D                  ;VideoCon.00424A8D
00424AC4|>8>mov eax,                  ;注册名ASCCI码值和
00424AC7|.9>cdq
00424AC8|.B>mov ecx,0A
00424ACD|.F>idiv ecx
00424ACF|.8>mov byte ptr ss:,dl             注册名ASCCI码值之和除以0x0A,保存余数⑤
00424AD2|.6>push 0                               ; /Arg1 = 00000000
00424AD4|.8>mov ecx,                  ; |
00424AD7|.8>add ecx,74                           ; |
00424ADA|.E>call 00423F90                        ; \VideoCon.00423F90
00424ADF|.8>mov byte ptr ss:,al
00424AE2|.6>push 1                               ; /Arg1 = 00000001
00424AE4|.8>mov ecx,                  ; |
00424AE7|.8>add ecx,74                           ; |
00424AEA|.E>call 00423F90                        ; \VideoCon.00423F90
00424AEF|.8>mov byte ptr ss:,al
00424AF2|.6>push 2                               ; /Arg1 = 00000002
00424AF4|.8>mov ecx,                  ; |
00424AF7|.8>add ecx,74                           ; |
00424AFA|.E>call 00423F90                        ; \VideoCon.00423F90
00424AFF|.8>mov byte ptr ss:,al
00424B02|.6>push 3                               ; /Arg1 = 00000003
00424B04|.8>mov ecx,                  ; |
00424B07|.8>add ecx,74                           ; |
00424B0A|.E>call 00423F90                        ; \VideoCon.00423F90
00424B0F|.8>mov byte ptr ss:,al
00424B12|.6>push 4                               ; /Arg1 = 00000004
00424B14|.8>mov ecx,                  ; |
00424B17|.8>add ecx,74                           ; |
00424B1A|.E>call 00423F90                        ; \VideoCon.00423F90
00424B1F|.8>mov byte ptr ss:,al
00424B22|.6>push 5                               ; /Arg1 = 00000005
00424B24|.8>mov ecx,                  ; |
00424B27|.8>add ecx,74                           ; |
00424B2A|.E>call 00423F90                        ; \VideoCon.00423F90
00424B2F|.8>mov byte ptr ss:,al
00424B32|.6>push 6                               ; /Arg1 = 00000006
00424B34|.8>mov ecx,                  ; |
00424B37|.8>add ecx,74                           ; |
00424B3A|.E>call 00423F90                        ; \VideoCon.00423F90
00424B3F|.8>mov byte ptr ss:,al
00424B42|.6>push 7                               ; /Arg1 = 00000007
00424B44|.8>mov ecx,                  ; |
00424B47|.8>add ecx,74                           ; |
00424B4A|.E>call 00423F90                        ; \VideoCon.00423F90
00424B4F|.8>mov byte ptr ss:,al
00424B52|.0>movzx edx,byte ptr ss:       ;余数①
00424B56|.0>movzx eax,byte ptr ss:    ;注册码第一位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:      ;余数②
00424B65|.0>movzx edx,byte ptr ss:    ;注册码第二位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:      ;余数③
00424B74|.0>movzx ecx,byte ptr ss:    ;注册码第三位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:      ;余数④
00424B83|.0>movzx eax,byte ptr ss:    ;注册码第四位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:      ;余数⑤
00424B92|.0>movzx edx,byte ptr ss:    ;注册码第五位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:
00424BA1|.8>cmp eax,35                           ;5 (通用注册码 51897629)
00424BA4|.0>jnz 00424C51                         ;不等,跳(注册失败)
00424BAA|.0>movzx ecx,byte ptr ss:
00424BAE|.8>cmp ecx,31                           ;1
00424BB1|.0>jnz 00424C51                         ;不等,跳
00424BB7|.0>movzx edx,byte ptr ss:
00424BBB|.8>cmp edx,38                           ;8
00424BBE|.0>jnz 00424C51                         ;不等,跳
00424BC4|.0>movzx eax,byte ptr ss:
00424BC8|.8>cmp eax,39                           ;9
00424BCB|.0>jnz 00424C51                         ;不等,跳
00424BD1|.0>movzx ecx,byte ptr ss:
00424BD5|.8>cmp ecx,37                           ;7
00424BD8|.7>jnz short 00424C51                   ;不等,跳
00424BDA|.0>movzx edx,byte ptr ss:
00424BDE|.8>cmp edx,36                           ;6
00424BE1|.7>jnz short 00424C51                   ;不等,跳
00424BE3|.0>movzx eax,byte ptr ss:
00424BE7|.8>cmp eax,32                           ;2
00424BEA|.7>jnz short 00424C51                   ;不等,跳
00424BEC|.0>movzx ecx,byte ptr ss:
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,
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,
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,
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 原创, 转载请注明作者并保持文章的完整, 谢谢!

傲月游居 发表于 2006-11-20 19:26:20

好强,学习收藏了!!

jjdg 发表于 2007-2-24 18:23:21

今天看见老大的分析总算是搞明白那个码是怎么算出来的了!
强!

小子贼野 发表于 2007-8-6 22:10:10

易语言就是好用,不过算法分析看起来还是有点困难
页: [1]
查看完整版本: Open Video Converter 3.0.1.310算法分析+注册机