吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22969|回复: 69
收起左侧

[原创] xx视频合并软件V2.20及同作者软件的破解、算法分析、算法注册机?

  [复制链接]
expasy 发表于 2015-11-19 02:04
本帖最后由 H夜 于 2019-6-6 18:30 编辑

今天在逛52的时候看到了下面这个帖子
[原创破解] 超级视频合并软件V2.20--内存注册机版
看了后觉得,额,找到了一个软柿子了,可以去捏一下,然后就去这个软件的官网下了几个来试一下,

想着顺便看看算法,写个注册机啥的

1、首先试的是超级视频合并软件 V2.20这个,知道没加壳的delphi的,直接拖进OD,通过字符串查找很快来到了这里

[Asm] 纯文本查看 复制代码
0057EAC8  /.  55                  push ebp                                 ;  注册按钮事件
0057EAC9  |.  8BEC                mov ebp,esp
0057EACB  |.  33C9                xor ecx,ecx
0057EACD  |.  51                  push ecx
0057EACE  |.  51                  push ecx
0057EACF  |.  51                  push ecx
0057EAD0  |.  51                  push ecx
0057EAD1  |.  51                  push ecx
0057EAD2  |.  51                  push ecx
0057EAD3  |.  53                  push ebx
0057EAD4  |.  8BD8                mov ebx,eax
0057EAD6  |.  33C0                xor eax,eax
0057EAD8  |.  55                  push ebp
0057EAD9  |.  68 4FEC5700         push VideoJoi.0057EC4F
0057EADE  |.  64:FF30             push dword ptr fs:[eax]
0057EAE1  |.  64:8920             mov dword ptr fs:[eax],esp
0057EAE4  |.  8D55 FC             lea edx,[local.1]
0057EAE7  |.  8B83 04030000       mov eax,dword ptr ds:[ebx+0x304]
0057EAED  |.  E8 72C6EEFF         call VideoJoi.0046B164                   ;  读取用户名
0057EAF2  |.  8B45 FC             mov eax,[local.1]
0057EAF5  |.  E8 A25BE8FF         call VideoJoi.0040469C                   ;  取长度
0057EAFA  |.  85C0                test eax,eax
0057EAFC  |.  75 2C               jnz short VideoJoi.0057EB2A              ;  非空
0057EAFE  |.  6A 40               push 0x40
0057EB00  |.  68 5CEC5700         push VideoJoi.0057EC5C                   ;  提示
0057EB05  |.  68 64EC5700         push VideoJoi.0057EC64                   ;  注册名不能为空,请重新输入!
0057EB0A  |.  8BC3                mov eax,ebx
0057EB0C  |.  E8 6F2EEFFF         call VideoJoi.00471980
0057EB11  |.  50                  push eax                                 ; |hOwner = NULL
0057EB12  |.  E8 258CE8FF         call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
0057EB17  |.  8B83 04030000       mov eax,dword ptr ds:[ebx+0x304]
0057EB1D  |.  8B10                mov edx,dword ptr ds:[eax]
0057EB1F  |.  FF92 C4000000       call near dword ptr ds:[edx+0xC4]
0057EB25  |.  E9 EA000000         jmp VideoJoi.0057EC14
0057EB2A  |>  8D55 F8             lea edx,[local.2]
0057EB2D  |.  8B83 08030000       mov eax,dword ptr ds:[ebx+0x308]
0057EB33  |.  E8 2CC6EEFF         call VideoJoi.0046B164                   ;  假码
0057EB38  |.  8B45 F8             mov eax,[local.2]                        ;  kernel32.7C817080
0057EB3B  |.  E8 5C5BE8FF         call VideoJoi.0040469C                   ;  假码长度
0057EB40  |.  85C0                test eax,eax
0057EB42  |.  75 2C               jnz short VideoJoi.0057EB70              ;  非空
0057EB44  |.  6A 40               push 0x40
0057EB46  |.  68 5CEC5700         push VideoJoi.0057EC5C                   ;  提示
0057EB4B  |.  68 80EC5700         push VideoJoi.0057EC80                   ;  注册码不能为空,请重新输入!
0057EB50  |.  8BC3                mov eax,ebx
0057EB52  |.  E8 292EEFFF         call VideoJoi.00471980
0057EB57  |.  50                  push eax                                 ; |hOwner = NULL
0057EB58  |.  E8 DF8BE8FF         call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
0057EB5D  |.  8B83 08030000       mov eax,dword ptr ds:[ebx+0x308]
0057EB63  |.  8B10                mov edx,dword ptr ds:[eax]
0057EB65  |.  FF92 C4000000       call near dword ptr ds:[edx+0xC4]
0057EB6B  |.  E9 A4000000         jmp VideoJoi.0057EC14
0057EB70  |>  8D55 F0             lea edx,[local.4]
0057EB73  |.  8B83 08030000       mov eax,dword ptr ds:[ebx+0x308]
0057EB79  |.  E8 E6C5EEFF         call VideoJoi.0046B164                   ;  读取假码
0057EB7E  |.  8B45 F0             mov eax,[local.4]
0057EB81  |.  8D55 F4             lea edx,[local.3]
0057EB84  |.  E8 BBA4E8FF         call VideoJoi.00409044                   ;  不知干什么的,去掉空字符
0057EB89  |.  8B45 F4             mov eax,[local.3]                        ;  kernel32.7C839AD8
0057EB8C  |.  50                  push eax
0057EB8D  |.  8D55 E8             lea edx,[local.6]
0057EB90  |.  8B83 04030000       mov eax,dword ptr ds:[ebx+0x304]
0057EB96  |.  E8 C9C5EEFF         call VideoJoi.0046B164                   ;  读取用户名
0057EB9B  |.  8B45 E8             mov eax,[local.6]
0057EB9E  |.  8D55 EC             lea edx,[local.5]
0057EBA1  |.  E8 9EA4E8FF         call VideoJoi.00409044                   ;  同上处理,去掉空字符
0057EBA6  |.  8B55 EC             mov edx,[local.5]
0057EBA9  |.  A1 A8C65900         mov eax,dword ptr ds:[0x59C6A8]
0057EBAE  |.  8B00                mov eax,dword ptr ds:[eax]
0057EBB0  |.  8B80 74040000       mov eax,dword ptr ds:[eax+0x474]
0057EBB6  |.  59                  pop ecx                                  ;  kernel32.7C817077
0057EBB7  |.  E8 3823F6FF         call VideoJoi.004E0EF4                   ;  /////可疑1,写注册表的
0057EBBC  |.  A1 A8C65900         mov eax,dword ptr ds:[0x59C6A8]
0057EBC1  |.  8B00                mov eax,dword ptr ds:[eax]
0057EBC3  |.  8B80 74040000       mov eax,dword ptr ds:[eax+0x474]
0057EBC9  |.  E8 C622F6FF         call VideoJoi.004E0E94                   ;  /////可疑2,算法&比较
0057EBCE  |.  84C0                test al,al
0057EBD0      75 29               jnz short VideoJoi.0057EBFB              ;  好明显的关键跳
0057EBD2  |.  6A 40               push 0x40
0057EBD4  |.  68 5CEC5700         push VideoJoi.0057EC5C                   ;  提示
0057EBD9  |.  68 9CEC5700         push VideoJoi.0057EC9C                   ;  注册码不正确,请检查注册码是否输错!
0057EBDE  |.  8BC3                mov eax,ebx
0057EBE0  |.  E8 9B2DEFFF         call VideoJoi.00471980
0057EBE5  |.  50                  push eax                                 ; |hOwner = NULL
0057EBE6  |.  E8 518BE8FF         call <jmp.&user32.MessageBoxA>           ; \MessageBoxA
0057EBEB  |.  8B83 08030000       mov eax,dword ptr ds:[ebx+0x308]
0057EBF1  |.  8B10                mov edx,dword ptr ds:[eax]
0057EBF3  |.  FF92 C4000000       call near dword ptr ds:[edx+0xC4]
0057EBF9  |.  EB 19               jmp short VideoJoi.0057EC14
0057EBFB  |>  6A 40               push 0x40
0057EBFD  |.  68 5CEC5700         push VideoJoi.0057EC5C                   ;  提示
0057EC02  |.  68 C0EC5700         push VideoJoi.0057ECC0                   ;  注册成功,您现在可以退出注册窗体了!
0057EC07  |.  8BC3                mov eax,ebx
0057EC09  |.  E8 722DEFFF         call VideoJoi.00471980
0057EC0E  |.  50                  push eax                                 ; |hOwner = NULL
0057EC0F  |.  E8 288BE8FF         call <jmp.&user32.MessageBoxA>           ; \MessageBoxA


很容易可以发现0057EBD0这行是关键的跳转,通过一一排除确定0057EBC9这行是关键call
[Asm] 纯文本查看 复制代码
0057EBC9  |.  E8 C622F6FF         call VideoJoi.004E0E94                   ;  /////关键call,算法&比较


F7进入这个call,来到这里:
[Asm] 纯文本查看 复制代码
004E0E94  /$  55                  push ebp
004E0E95  |.  8BEC                mov ebp,esp
004E0E97  |.  6A 00               push 0x0
004E0E99  |.  53                  push ebx
004E0E9A  |.  8BD8                mov ebx,eax
004E0E9C  |.  33C0                xor eax,eax
004E0E9E  |.  55                  push ebp
004E0E9F  |.  68 E60E4E00         push VideoJoi.004E0EE6
004E0EA4  |.  64:FF30             push dword ptr fs:[eax]
004E0EA7  |.  64:8920             mov dword ptr fs:[eax],esp
004E0EAA  |.  8BC3                mov eax,ebx
004E0EAC  |.  E8 73FEFFFF         call VideoJoi.004E0D24                   ;  注册表操作的?
004E0EB1  |.  DDD8                fstp st
004E0EB3  |.  8D55 FC             lea edx,[local.1]
004E0EB6  |.  8BC3                mov eax,ebx
004E0EB8  |.  E8 8FFCFFFF         call VideoJoi.004E0B4C                   ;  call算法
004E0EBD  |.  8B55 FC             mov edx,[local.1]                        ;  假码
004E0EC0  |.  8B43 14             mov eax,dword ptr ds:[ebx+0x14]          ;  真码??
004E0EC3  |.  E8 2039F2FF         call VideoJoi.004047E8                   ;  比较
004E0EC8      75 04               jnz short VideoJoi.004E0ECE              ;  这里改就可以注册成功了
004E0ECA  |.  B3 01               mov bl,0x1
004E0ECC  |.  EB 02               jmp short VideoJoi.004E0ED0
004E0ECE  |>  33DB                xor ebx,ebx
004E0ED0  |>  33C0                xor eax,eax
004E0ED2  |.  5A                  pop edx                                  ;  kernel32.7C817077
004E0ED3  |.  59                  pop ecx                                  ;  kernel32.7C817077
004E0ED4  |.  59                  pop ecx                                  ;  kernel32.7C817077
004E0ED5  |.  64:8910             mov dword ptr fs:[eax],edx               ;  ntdll.KiFastSystemCallRet
004E0ED8  |.  68 ED0E4E00         push VideoJoi.004E0EED
004E0EDD  |>  8D45 FC             lea eax,[local.1]
004E0EE0  |.  E8 DB34F2FF         call VideoJoi.004043C0
004E0EE5  \.  C3                  retn


发现在004E0EC3这行的时候出现了类似于真码的字符串,在edx中
我的是用户名expasy,类似真码的字符串是ASCII "vj26-97378v201-1607",先记着待会用

继续在004E0EB8这行F7,进入所谓的算法
[Asm] 纯文本查看 复制代码
004E0B4C  /$  55                  push ebp                                 ;  注册码计算
004E0B4D  |.  8BEC                mov ebp,esp
004E0B4F  |.  B9 05000000         mov ecx,0x5
004E0B54  |>  6A 00               /push 0x0
004E0B56  |.  6A 00               |push 0x0
004E0B58  |.  49                  |dec ecx
004E0B59  |.^ 75 F9               \jnz short VideoJoi.004E0B54
004E0B5B  |.  51                  push ecx
004E0B5C  |.  53                  push ebx
004E0B5D  |.  56                  push esi
004E0B5E  |.  57                  push edi                                 ;  ntdll.7C930228
004E0B5F  |.  8955 FC             mov [local.1],edx                        ;  ntdll.KiFastSystemCallRet
004E0B62  |.  8BF8                mov edi,eax
004E0B64  |.  33C0                xor eax,eax
004E0B66  |.  55                  push ebp
004E0B67  |.  68 0A0D4E00         push VideoJoi.004E0D0A
004E0B6C  |.  64:FF30             push dword ptr fs:[eax]
004E0B6F  |.  64:8920             mov dword ptr fs:[eax],esp
004E0B72  |.  8B45 FC             mov eax,[local.1]
004E0B75  |.  E8 4638F2FF         call VideoJoi.004043C0                   ;  lstrclr,清屏
004E0B7A  |.  8D55 F0             lea edx,[local.4]
004E0B7D  |.  8BC7                mov eax,edi                              ;  ntdll.7C930228
004E0B7F  |.  E8 60FFFFFF         call VideoJoi.004E0AE4                   ;  注册表操作,用户名
004E0B84  |.  8B45 F0             mov eax,[local.4]
004E0B87  |.  E8 103BF2FF         call VideoJoi.0040469C                   ;  用户名长度
004E0B8C  |.  8BF0                mov esi,eax
004E0B8E  |.  85F6                test esi,esi                             ;  用作循环变量
004E0B90  |.  7E 30               jle short VideoJoi.004E0BC2
004E0B92  |.  BB 01000000         mov ebx,0x1
004E0B97  |>  8D55 E8             /lea edx,[local.6]                       ;  ------------处理过程1------------
004E0B9A  |.  8BC7                |mov eax,edi                             ;  ntdll.7C930228
004E0B9C  |.  E8 43FFFFFF         |call VideoJoi.004E0AE4                  ;  取用户名?
004E0BA1  |.  8B45 E8             |mov eax,[local.6]
004E0BA4  |.  0FB64418 FF         |movzx eax,byte ptr ds:[eax+ebx-0x1]     ;  依次取用户名的各位
004E0BA9  |.  8D4D EC             |lea ecx,[local.5]                       ;  本来就是16进制的ascii值
004E0BAC  |.  33D2                |xor edx,edx                             ;  ntdll.KiFastSystemCallRet
004E0BAE  |.  E8 7589F2FF         |call VideoJoi.00409528                  ;  IntToHex,转16进制
004E0BB3  |.  8B55 EC             |mov edx,[local.5]                       ;  将本来就是16进制的ascii值每一位当作是字符
004E0BB6  |.  8D45 F8             |lea eax,[local.2]                       ;  如'z'=0x7a-->'7a'=0x37,0x41
004E0BB9  |.  E8 E63AF2FF         |call VideoJoi.004046A4                  ;  然后字符串连接
004E0BBE  |.  43                  |inc ebx
004E0BBF  |.  4E                  |dec esi
004E0BC0  |.^ 75 D5               \jnz short VideoJoi.004E0B97             ;  ------------过程1end------------
004E0BC2  |>  8B45 F8             mov eax,[local.2]                        ;  【结果1】
004E0BC5  |.  E8 D23AF2FF         call VideoJoi.0040469C                   ;  len()
004E0BCA  |.  8BF0                mov esi,eax                              ;  循环变量
004E0BCC  |.  85F6                test esi,esi
004E0BCE  |.  7E 2C               jle short VideoJoi.004E0BFC
004E0BD0  |.  BB 01000000         mov ebx,0x1
004E0BD5  |>  8B45 F8             /mov eax,[local.2]                       ;  ------------处理过程2------------
004E0BD8  |.  E8 BF3AF2FF         |call VideoJoi.0040469C                  ;  【结果1】长度
004E0BDD  |.  2BC3                |sub eax,ebx                             ;  -1,2,3,4...
004E0BDF  |.  8B55 F8             |mov edx,[local.2]                       ;  kernel32.7C817080
004E0BE2  |.  8A1402              |mov dl,byte ptr ds:[edx+eax]
004E0BE5  |.  8D45 E4             |lea eax,[local.7]
004E0BE8  |.  E8 BB39F2FF         |call VideoJoi.004045A8                  ;  倒序取【结果1】各位
004E0BED  |.  8B55 E4             |mov edx,[local.7]
004E0BF0  |.  8D45 F4             |lea eax,[local.3]
004E0BF3  |.  E8 AC3AF2FF         |call VideoJoi.004046A4                  ;  连接
004E0BF8  |.  43                  |inc ebx
004E0BF9  |.  4E                  |dec esi                                 ;  【结果2】
004E0BFA  |.^ 75 D9               \jnz short VideoJoi.004E0BD5             ;  ------------过程2end------------
004E0BFC  |>  8D45 F8             lea eax,[local.2]
004E0BFF  |.  50                  push eax                                 ;  ------------处理过程3------------
004E0C00  |.  B9 04000000         mov ecx,0x4
004E0C05  |.  BA 01000000         mov edx,0x1
004E0C0A  |.  8B45 F4             mov eax,[local.3]                        ;  kernel32.7C839AD8
004E0C0D  |.  E8 EA3CF2FF         call VideoJoi.004048FC                   ;  【结果2】的1-4位,相当于vb Mid(eax,edx,ecx)
004E0C12  |.  8D45 F4             lea eax,[local.3]                        ;  【结果3-1】
004E0C15  |.  50                  push eax
004E0C16  |.  B9 04000000         mov ecx,0x4
004E0C1B  |.  BA 05000000         mov edx,0x5
004E0C20  |.  8B45 F4             mov eax,[local.3]                        ;  kernel32.7C839AD8
004E0C23  |.  E8 D43CF2FF         call VideoJoi.004048FC                   ;  【结果2】的第5-8位,相当于vb Mid(eax,5,4)
004E0C28  |.  8B45 F8             mov eax,[local.2]                        ;  【结果3-2】
004E0C2B  |.  E8 6C3AF2FF         call VideoJoi.0040469C
004E0C30  |.  83F8 04             cmp eax,0x4                              ;  这里是肯定相等的,取的就是4位呀
004E0C33  |.  7D 2F               jge short VideoJoi.004E0C64
004E0C35  |.  8B45 F8             mov eax,[local.2]                        ;  ------这里没用?-----
004E0C38  |.  E8 5F3AF2FF         call VideoJoi.0040469C
004E0C3D  |.  8BD8                mov ebx,eax
004E0C3F  |.  83FB 03             cmp ebx,0x3
004E0C42  |.  7F 20               jg short VideoJoi.004E0C64
004E0C44  |>  8D4D E0             /lea ecx,[local.8]
004E0C47  |.  8BC3                |mov eax,ebx
004E0C49  |.  C1E0 02             |shl eax,0x2
004E0C4C  |.  33D2                |xor edx,edx                             ;  ntdll.KiFastSystemCallRet
004E0C4E  |.  E8 D588F2FF         |call VideoJoi.00409528
004E0C53  |.  8B55 E0             |mov edx,[local.8]
004E0C56  |.  8D45 F8             |lea eax,[local.2]
004E0C59  |.  E8 463AF2FF         |call VideoJoi.004046A4
004E0C5E  |.  43                  |inc ebx
004E0C5F  |.  83FB 04             |cmp ebx,0x4
004E0C62  |.^ 75 E0               \jnz short VideoJoi.004E0C44             ;  -----到这里都没用?0-----
004E0C64  |>  8B45 F4             mov eax,[local.3]                        ;  kernel32.7C839AD8
004E0C67  |.  E8 303AF2FF         call VideoJoi.0040469C
004E0C6C  |.  83F8 04             cmp eax,0x4
004E0C6F  |.  7D 2F               jge short VideoJoi.004E0CA0
004E0C71  |.  8B45 F4             mov eax,[local.3]                        ;  ------这里没用?-----
004E0C74  |.  E8 233AF2FF         call VideoJoi.0040469C
004E0C79  |.  8BD8                mov ebx,eax
004E0C7B  |.  83FB 03             cmp ebx,0x3
004E0C7E  |.  7F 20               jg short VideoJoi.004E0CA0
004E0C80  |>  8D4D DC             /lea ecx,[local.9]
004E0C83  |.  8BC3                |mov eax,ebx
004E0C85  |.  C1E0 02             |shl eax,0x2
004E0C88  |.  33D2                |xor edx,edx                             ;  ntdll.KiFastSystemCallRet
004E0C8A  |.  E8 9988F2FF         |call VideoJoi.00409528
004E0C8F  |.  8B55 DC             |mov edx,[local.9]
004E0C92  |.  8D45 F4             |lea eax,[local.3]
004E0C95  |.  E8 0A3AF2FF         |call VideoJoi.004046A4
004E0C9A  |.  43                  |inc ebx
004E0C9B  |.  83FB 04             |cmp ebx,0x4
004E0C9E  |.^ 75 E0               \jnz short VideoJoi.004E0C80             ;  -----到这里都没用?0-----
004E0CA0  |>  8D45 D8             lea eax,[local.10]
004E0CA3  |.  50                  push eax
004E0CA4  |.  8B47 04             mov eax,dword ptr ds:[edi+0x4]           ;  ntdll.7C96F7E7
004E0CA7  |.  B9 04000000         mov ecx,0x4
004E0CAC  |.  BA 01000000         mov edx,0x1
004E0CB1  |.  E8 463CF2FF         call VideoJoi.004048FC                   ;  取1-4位
004E0CB6  |.  FF75 D8             push [local.10]                          ;  ntdll.7C930228
004E0CB9  |.  68 200D4E00         push VideoJoi.004E0D20                   ;  -
004E0CBE  |.  FF75 F8             push [local.2]                           ;  kernel32.7C817080
004E0CC1  |.  8D45 D4             lea eax,[local.11]
004E0CC4  |.  50                  push eax
004E0CC5  |.  8B47 04             mov eax,dword ptr ds:[edi+0x4]           ;  ntdll.7C96F7E7
004E0CC8  |.  B9 05000000         mov ecx,0x5
004E0CCD  |.  BA 05000000         mov edx,0x5
004E0CD2  |.  E8 253CF2FF         call VideoJoi.004048FC                   ;  5-8位
004E0CD7  |.  FF75 D4             push [local.11]                          ;  kernel32.7C817077
004E0CDA  |.  68 200D4E00         push VideoJoi.004E0D20                   ;  -
004E0CDF  |.  FF75 F4             push [local.3]                           ;  kernel32.7C839AD8
004E0CE2  |.  8B45 FC             mov eax,[local.1]
004E0CE5  |.  BA 06000000         mov edx,0x6
004E0CEA  |.  E8 6D3AF2FF         call VideoJoi.0040475C                   ;  连接,出真码
004E0CEF  |.  33C0                xor eax,eax
004E0CF1  |.  5A                  pop edx                                  ;  kernel32.7C817077
004E0CF2  |.  59                  pop ecx                                  ;  kernel32.7C817077
004E0CF3  |.  59                  pop ecx                                  ;  kernel32.7C817077
004E0CF4  |.  64:8910             mov dword ptr fs:[eax],edx               ;  ntdll.KiFastSystemCallRet
004E0CF7  |.  68 110D4E00         push VideoJoi.004E0D11
004E0CFC  |>  8D45 D4             lea eax,[local.11]
004E0CFF  |.  BA 0A000000         mov edx,0xA
004E0D04  |.  E8 DB36F2FF         call VideoJoi.004043E4
004E0D09  \.  C3                  retn


2、算法分析
算法相当简单:
第一步:
处理用户名,这步每个软件的算法结果都一样
expasy的16进制的ascii码:65 78 70 61 73 79
直接变成字符,就是:“657870617379 ”
然后倒序,就是:“973716078756”
取1-4位:“9737”,5-8位:“1607

第二步:
一个固定的字符串“vj268v2013”,这个字符每个软件不同,也只有这点不同而已
取1-4位:“vj26”,5-9位:“8v201

第三步:
拼接起来,中间用“-”隔开
得到最终结果:vj26-97378v201-1607
连注册机都懒得写了,直接用个计算器就行了。注册信息保存在注册表“HKEY_LOCAL_MACHINE\SOFTWARE\VJiner\Joiner”


3、继续研究
本来以为连算法都解决了,这样就已经完美了,没想到没这么简单。
输入刚才的注册码,显示注册成功,是的,仅仅是显示注册成功而

显示注册成功

显示注册成功


重启软件,也没有出现注册窗口了,然后我试了一下转个视频,选择转mp4,其他设置没变,然后直接就不行

转化失败

转化失败

点击关于,是demo,就是这只是演示版

转一个wmv格式的,转成功了,但是有水印



种种迹象表明,要么这个注册码不对,要么就是其他地方还有验证,要么这个程序本身就只是个demo版本
然后我试了下OD中搜索字符串“demo”,居然给我找到了
中文搜索引擎, 条目 4749
地址=0057F19A
反汇编=mov edx,VideoJoi.0057F230
文本字符串=Demo

然后很容易到了这里:
[Asm] 纯文本查看 复制代码
0057F158  |.  A1 A8C65900         mov eax,dword ptr ds:[0x59C6A8]
0057F15D  |.  8B00                mov eax,dword ptr ds:[eax]
0057F15F  |.  80B8 70040000 00    cmp byte ptr ds:[eax+0x470],0x0
0057F166  |.  75 22               jnz short VideoJoi.0057F18A              ;  这个跳不能跳
0057F168  |.  BA 0000FF00         mov edx,0xFF0000
0057F16D  |.  8B83 1C030000       mov eax,dword ptr ds:[ebx+0x31C]
0057F173  |.  E8 8CC1EEFF         call VideoJoi.0046B304
0057F178  |.  BA 20F25700         mov edx,VideoJoi.0057F220                ;  正式
0057F17D  |.  8B83 1C030000       mov eax,dword ptr ds:[ebx+0x31C]
0057F183  |.  E8 0CC0EEFF         call VideoJoi.0046B194
0057F188  |.  EB 20               jmp short VideoJoi.0057F1AA
0057F18A  |>  BA FF000000         mov edx,0xFF
0057F18F  |.  8B83 1C030000       mov eax,dword ptr ds:[ebx+0x31C]
0057F195  |.  E8 6AC1EEFF         call VideoJoi.0046B304
0057F19A  |.  BA 30F25700         mov edx,VideoJoi.0057F230                ;  Demo
0057F19F  |.  8B83 1C030000       mov eax,dword ptr ds:[ebx+0x31C]


把这个0057F166的jnz跳转改了一下,呵呵,变成正式版了



测试一下,转个视频,结果如下:

无水印

无水印


没有水印了,看来是真的破解

至于能直接注册成功,并且是正式版的序列号,我现在还没有找到,不过爆破已经能够成功了。

我爆破选择的爆破点有两个:004E0EC8和0057FE85
1:004E0EC8  jne 004E0ECEh ------->004E0ECAh  ;////注册成功的爆破
2:  0057FE85  mov byte ptr [ebx+00000470h], 01h ------>mov byte ptr [ebx+00000470h], 00h   /////爆破成正式版
0057FE85这处是对“正式版”的标志初始赋值的地方,单步+内存访问断点找到的
当然也可以改跳转的,对这个的验证有几处,改那几处的跳就行了

基本同样的方法可以爆破这一系列的软件。

2015.11.19
注册机及源码在 楼下、20楼
http://www.52pojie.cn/forum.php? ... 435553&pid=10776249


成品:http://pan.baidu.com/s/1c0kF5uS 密码:68p2



2015.11.24
之前图片不见了,重新上传了图片
算法部分的补充:
当用户名小于4位(中文2位)时,注册码也可以计算,相当于就是在倒序后取用户名的长度*4(中文是*8)的值来算的,同样位数的算出来的码差不太多
把注册机的21行:
b = Right(b, 8)                                 '这样做是为了中文字符
改成
If Len(b) >= 8 Then
    b = Right(b, 8)                                 '这样做是为了中文字符
ElseIf Len(b) = 6 Then
    b = "C8" & b
ElseIf Len(b) = 4 Then
    b = "C840" & b
Else
    b = "C840C8" & b
End If

就可以了
另外,"超级iphone视频转换器"的字符串是"iphone848v2013","超级屏幕录像专家"的字符串是"PictureRecording86v2013",很简单就可以得到,把源码中的字符串换成这些就可以变成另外的注册机了。


水印

水印

demo

demo

正式

正式

免费评分

参与人数 17威望 +1 吾爱币 +2 热心值 +17 收起 理由
原始之家 + 1 + 1 热心回复!
lzqysj + 1 + 1 支持阁下誓去水印的探索精神。还有这个跳不能跳,阁下是如何改的
wenz + 1 大神,请接受我的膝盖。
loduou88 + 1 我很赞同!
YOMazj + 1 谢谢@Thanks!
zoomin + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
lies2014 + 1 谢谢@Thanks!
青年的故事 + 1 已答复!
Mr.Mlwareson_V + 1 鼓励转贴优秀软件安全工具和文档!
myqqq + 1 热心回复!
kay_凯 + 1 热心回复!
FannyKong + 1 谢谢@Thanks!
爱自由 + 1 谢谢@Thanks!
倾听回忆 + 1 已经处理,感谢您对吾爱破解论坛的支持!
JuN...TMTT + 1 已经处理,感谢您对吾爱破解论坛的支持!
Sound + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
chinaldc + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| expasy 发表于 2015-11-19 14:22
本帖最后由 expasy 于 2015-11-19 14:36 编辑

算法注册机?: 注册机及源码.rar (309.71 KB, 下载次数: 328) ,密码:52pojie
使用的吾爱破解注册机生成器编写的注册机,
源码:

[Visual Basic] 纯文本查看 复制代码
Function GetMC(X) 
GetMC=X
MC=GetMC 
End Function

Function GetName(X) 
GetName=x
Name=GetName 
End Function

Function GetSN() 
Dim a, b, username(4), sn(19), i, j, expasy '数组不喜欢用第一位
a = Name
if len(a)>3 then
a = Right(a, 4)
For i = 1 To 4                                  '转16进制
username(i) = Hex(Asc(Mid(a, i, 1)))
username(i) = username(i) & ""
b = b + username(i)
Next 
b = Right(b, 8)                                 '这样做是为了中文字符

Dim invertname(8), c                            '反序
For i = 1 To 8
invertname(i) = Mid(b, (9 - i), 1)
c = c & invertname(i) & ""
Next 

Dim str
str = "vj268v2013"
For i = 1 To 4                                  '开始生成注册码了,其实可以精简下代码
sn(i) = Mid(str, i, 1)
sn(i + 5) = invertname(i)
sn(i + 9) = Mid(str, (i + 4), 1)
sn(i + 15) = invertname(i + 4)
Next 
sn(14) = Mid(str, 9, 1)
sn(5) = "-"
sn(15) = "-"

For i = 1 To 19
expasy = expasy & sn(i)
Next 

else
expasy = "用户名4位(或汉字2位)及以上。"
end if

GetSN = expasy
End Function

免费评分

参与人数 1热心值 +1 收起 理由
Peace + 1 我很赞同!

查看全部评分

青年的故事 发表于 2015-12-7 23:29
expasy 发表于 2015-11-19 14:22
算法注册机?:,密码:52pojie
使用的吾爱破解注册机生成器编写的注册机,
源码:

兄弟你那个“把这个0057F166的jnz跳转改了一下,呵呵,变成正式版了”怎么改?改成什么了?能给大家说下吗
chinaldc 发表于 2015-11-19 02:42
baowujin 发表于 2015-11-19 05:59
没了啊?就这样了吗。
付景帆 发表于 2015-11-19 06:51
没了啊?就这样了吗
1485573943 发表于 2015-11-19 07:36
我需要多多学习了!基础查!分析注册过程有待进一步提高
aikuimail 发表于 2015-11-19 08:00
图片要重新弄一个,显示不出来。
aikuimail 发表于 2015-11-19 08:02
楼主能不能顺便把软件官网贴一下,我找不到
头像被屏蔽
mylin2008 发表于 2015-11-19 08:06
提示: 作者被禁止或删除 内容自动屏蔽
weizhuqiang 发表于 2015-11-19 08:08
需要多多学习了!基础查!分析注册过程有待进一步提高
JuN...TMTT 发表于 2015-11-19 08:17
厉害啊,学习学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 19:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表