好友
阅读权限 25
听众
最后登录 1970-1-1
本帖最后由 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 -9737 8v201 -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",很简单就可以得到,把源码中的字符串换成这些就可以变成另外的注册机了。
免费评分
查看全部评分