ScreenCapture算法分析
本帖最后由 Dxer 于 2016-3-14 13:57 编辑【破文作者】Dxer
【作者邮箱】bbs.chinapyg.com
【作者主页】www.chinapyg.com
【破解工具】OD,dede
【破解平台】xp sp3
【软件名称】ScreenCapture
【软件大小】15MB
【原版下载】www.mp4soft.cn
【保护方式】注册码
【软件简介】《超级屏幕录像专家》是一款非常容易上手的录制工具,其内容简单,易上手,只需按下录制键即可录制出高清视频,软件提供全屏录制和自定义范围录制功能,用户可以通过勾选是否录制声音,选择录制麦克风声音或混音立体声来录制出自己想要的视频音效。用户可通过《超级屏幕录像专家》录制自己演唱的歌曲、游戏视频、软件的操作过程、网络教学、网络电视以及网络电影等视频,软件为用户提供高清的视频素材,供用户后期制作。本软件使用简单,是录制视频的首选软件。
1、支持长时间录像并且保证声音同步,在硬盘空间足够的情况下,可以进行不限时间录象。
2、直接录制生成AVI动画,支持各种压缩方式。
3、录制目标自由选取:可以是全屏、选定窗口或者选定范围。
4、支持标准录制和高清录制,高清录制是别的软件没有的。
5、支持麦克风混音效果录制。
6、支持录制快捷的任意设置。
7、可以用于录制软件操作教程、长时间录制网络课件、录制QQ/MSN等聊天视频、录制网络电视节目、录制电影片段等。
8、软件界面美观,操作简单易上手、功能强大实用。
【破解声明】只是兴趣爱好,大侠们看看飘过.顺便教育下我!
------------------------------------------------------------------------
【破解过程】
用户名:Dxer
注册码:Pict-2756ureRe-8744
验证算法部分:
用户名字符串:
00574DA2 55 PUSH EBP
00574DA3 68 464F5700 PUSH ScreenCa.00574F46
00574DA8 64:FF30 PUSH DWORD PTR FS: ; FOW
00574DAB 64:8920 MOV DWORD PTR FS:, ESP
00574DAE 8B45 FC MOV EAX, DWORD PTR SS:
00574DB1 E8 E2F5E8FF CALL <ScreenCa.<-TObject@System.@LStrCl>
00574DB6 8D55 F0 LEA EDX, DWORD PTR SS:
00574DB9 8BC7 MOV EAX, EDI
00574DBB E8 60FFFFFF CALL ScreenCa.00574D20 ; 进入call
00574DC0 8B45 F0 MOV EAX, DWORD PTR SS:
00574DC3 E8 90F8E8FF CALL ScreenCa.00404658 ; 用户名
00574DC8 8BF0 MOV ESI, EAX
00574DCA 85F6 TEST ESI, ESI
00574DCC 7E 30 JLE SHORT ScreenCa.00574DFE
00574DCE BB 01000000 MOV EBX, 0x1 ; 用户名循环开始
00574DD3 8D55 E8 LEA EDX, DWORD PTR SS: ; %
00574DD6 8BC7 MOV EAX, EDI ; L淌
00574DD8 E8 43FFFFFF CALL ScreenCa.00574D20
00574DDD 8B45 E8 MOV EAX, DWORD PTR SS: ; 用户名
00574DE0 0FB64418 FF MOVZX EAX, BYTE PTR DS: ; DS:=5B ('[')
00574DE5 8D4D EC LEA ECX, DWORD PTR SS: ; L淌
00574DE8 33D2 XOR EDX, EDX
00574DEA E8 3145E9FF CALL <ScreenCa.<-UnitSysUtils@SysUtils.>
00574DEF 8B55 EC MOV EDX, DWORD PTR SS: ; (ASCII "5B")
00574DF2 8D45 F8 LEA EAX, DWORD PTR SS: ; L淌
00574DF5 E8 66F8E8FF CALL <ScreenCa.<-TObject@System.@LStrCa>
00574DFA 43 INC EBX
00574DFB 4E DEC ESI
00574DFC^ 75 D5 JNZ SHORT ScreenCa.00574DD3
字符串:
[ = 5B
P = 50
D = 44
G = 47
] = 5D
D = 44
x = 78
e = 65
r = 72
用户名转Unicode倒序循环:
00574DFE 8B45 F8 MOV EAX, DWORD PTR SS: ; (ASCII "5B5044475D44786572")
00574E01 E8 52F8E8FF CALL ScreenCa.00404658 ; 72
00574E06 8BF0 MOV ESI, EAX
00574E08 85F6 TEST ESI, ESI
00574E0A 7E 2C JLE SHORT ScreenCa.00574E38 ; 转Unicode倒序循环
00574E0C BB 01000000 MOV EBX, 0x1
00574E11 8B45 F8 MOV EAX, DWORD PTR SS: ; (ASCII "5B5044475D44786572")
00574E14 E8 3FF8E8FF CALL ScreenCa.00404658
00574E19 2BC3 SUB EAX, EBX
00574E1B 8B55 F8 MOV EDX, DWORD PTR SS: ; 72
00574E1E 8A1402 MOV DL, BYTE PTR DS: ; DS:=32 ('2')
00574E21 8D45 E4 LEA EAX, DWORD PTR SS:
00574E24 E8 57F7E8FF CALL ScreenCa.00404580
00574E29 8B55 E4 MOV EDX, DWORD PTR SS: ; (UNICODE "2")
00574E2C 8D45 F4 LEA EAX, DWORD PTR SS: ; L淌
00574E2F E8 2CF8E8FF CALL <ScreenCa.<-TObject@System.@LStrCa>
00574E34 43 INC EBX
00574E35 4E DEC ESI
00574E36^ 75 D9 JNZ SHORT ScreenCa.00574E11
S1:
00574E38 8D45 F8 LEA EAX, DWORD PTR SS:
00574E3B 50 PUSH EAX
00574E3C B9 04000000 MOV ECX, 0x4 ; 取前四位
00574E41 BA 01000000 MOV EDX, 0x1 ;从第一位开始取
00574E46 8B45 F4 MOV EAX, DWORD PTR SS: ; (ASCII "27568744D5744405B5")
00574E49 E8 6AFAE8FF CALL <ScreenCa.<-TObject@System.@LStrCo>
00574E4E 8D45 F4 LEA EAX, DWORD PTR SS:
00574E51 50 PUSH EAX
00574E52 B9 04000000 MOV ECX, 0x4 ;取四位
00574E57 BA 05000000 MOV EDX, 0x5 ;从第五位开始取
00574E5C 8B45 F4 MOV EAX, DWORD PTR SS: ; (ASCII "27568744D5744405B5")
00574E5F E8 54FAE8FF CALL <ScreenCa.<-TObject@System.@LStrCo>
00574E64 8B45 F8 MOV EAX, DWORD PTR SS: ; (ASCII "2756")
00574E67 E8 ECF7E8FF CALL ScreenCa.00404658
00574E6C 83F8 04 CMP EAX, 0x4 ;
00574E6F 7D 2F JGE SHORT ScreenCa.00574EA0
00574E71 8B45 F8 MOV EAX, DWORD PTR SS:
00574E74 E8 DFF7E8FF CALL ScreenCa.00404658
00574E79 8BD8 MOV EBX, EAX
00574E7B 83FB 03 CMP EBX, 0x3
00574E7E 7F 20 JG SHORT ScreenCa.00574EA0
00574E80 8D4D E0 LEA ECX, DWORD PTR SS:
00574E83 8BC3 MOV EAX, EBX
00574E85 C1E0 02 SHL EAX, 0x2
00574E88 33D2 XOR EDX, EDX ; 14
00574E8A E8 9144E9FF CALL <ScreenCa.<-UnitSysUtils@SysUtils.>
00574E8F 8B55 E0 MOV EDX, DWORD PTR SS: ; 10
00574E92 8D45 F8 LEA EAX, DWORD PTR SS:
00574E95 E8 C6F7E8FF CALL <ScreenCa.<-TObject@System.@LStrCa>
00574E9A 43 INC EBX
00574E9B 83FB 04 CMP EBX, 0x4
00574E9E^ 75 E0 JNZ SHORT ScreenCa.00574E80
S2:
00574EA0 8B45 F4 MOV EAX, DWORD PTR SS: ; 8744
00574EA3 E8 B0F7E8FF CALL ScreenCa.00404658
00574EA8 83F8 04 CMP EAX, 0x4 ;
00574EAB 7D 2F JGE SHORT ScreenCa.00574EDC
00574EAD 8B45 F4 MOV EAX, DWORD PTR SS:
00574EB0 E8 A3F7E8FF CALL ScreenCa.00404658
00574EB5 8BD8 MOV EBX, EAX
00574EB7 83FB 03 CMP EBX, 0x3
00574EBA 7F 20 JG SHORT ScreenCa.00574EDC
00574EBC 8D4D DC LEA ECX, DWORD PTR SS:
00574EBF 8BC3 MOV EAX, EBX
00574EC1 C1E0 02 SHL EAX, 0x2
00574EC4 33D2 XOR EDX, EDX
00574EC6 E8 5544E9FF CALL <ScreenCa.<-UnitSysUtils@SysUtils.>
00574ECB 8B55 DC MOV EDX, DWORD PTR SS:
00574ECE 8D45 F4 LEA EAX, DWORD PTR SS:
00574ED1 E8 8AF7E8FF CALL <ScreenCa.<-TObject@System.@LStrCa>
00574ED6 43 INC EBX
00574ED7 83FB 04 CMP EBX, 0x4
00574EDA^ 75 E0 JNZ SHORT ScreenCa.00574EBC
S3:
00574EDC 8D45 D8 LEA EAX, DWORD PTR SS: ;
00574EDF 50 PUSH EAX
00574EE0 8B47 04 MOV EAX, DWORD PTR DS: ; PictureRecording86v2013
00574EE3 B9 04000000 MOV ECX, 0x4 ;取前四位
00574EE8 BA 01000000 MOV EDX, 0x1 ; 从第一位取
00574EED E8 C6F9E8FF CALL <ScreenCa.<-TObject@System.@LStrCo>
00574EF2 FF75 D8 PUSH DWORD PTR SS: ; Pict
00574EF5 68 5C4F5700 PUSH ScreenCa.00574F5C ; 联接符"-"
00574EFA FF75 F8 PUSH DWORD PTR SS: ;(ASCII "27568744D5744405B5")与(ASCII "27561014181C2024282C30")
00574EFD 8D45 D4 LEA EAX, DWORD PTR SS:
00574F00 50 PUSH EAX
00574F01 8B47 04 MOV EAX, DWORD PTR DS: ; PictureRecording86v2013
00574F04 B9 05000000 MOV ECX, 0x5 ;取五位
00574F09 BA 05000000 MOV EDX, 0x5 ;从第五位取
00574F0E E8 A5F9E8FF CALL <ScreenCa.<-TObject@System.@LStrCo>
00574F13 FF75 D4 PUSH DWORD PTR SS: ; ureRe
00574F16 68 5C4F5700 PUSH ScreenCa.00574F5C ;联接符:"-"
00574F1B FF75 F4 PUSH DWORD PTR SS: ; 8744
00574F1E 8B45 FC MOV EAX, DWORD PTR SS:
00574F21 BA 06000000 MOV EDX, 0x6
00574F26 E8 EDF7E8FF CALL <ScreenCa.<-TObject@System.@LStrCa>
00574F2B 33C0 XOR EAX, EAX
00574F2D 5A POP EDX
00574F2E 59 POP ECX ; ScreenCa.00574F46
00574F2F 59 POP ECX
00574F30 64:8910 MOV DWORD PTR FS:, EDX
00574F33 68 4D4F5700 PUSH ScreenCa.00574F4D
00574F38 8D45 D4 LEA EAX, DWORD PTR SS:
00574F3B BA 0A000000 MOV EDX, 0xA
00574F40 E8 77F4E8FF CALL <ScreenCa.<-TObject@System.@LStrAr>
00574F45 C3 RETN
00574F46^ E9 91EDE8FF JMP <ScreenCa.<-TObject@System.@Handle>
00574F4B^ EB EB JMP SHORT ScreenCa.00574F38
00574F4D 5F POP EDI
00574F4E 5E POP ESI
00574F4F 5B POP EBX
00574F50 8BE5 MOV ESP, EBP
00574F52 5D POP EBP
00574F53 C3 RETN
------------------------------------------------------------------------
【破解总结】初步猜测(由于本人刚接触算法很多不懂,错了.大家多多教育.)
1.计算用户名转ascii码,然后倒序ascii码.
2.固定字符串:PictureRecording86v2013,取前四位Pict,联接符:"-" .倒序前四位2756,从PictureRecording86v2013第五位起到第九位ureRe,联接符:"-"从27568744D5744405B5第五位到第八位8744
3.串联:Pict-2756ureRe-8744注册表删除即可显示非注册:
Windows Registry Editor Version 5.00
"Date"=hex:00,00,00,00,a0,8b,e4,40
"RegName"="Dxer"
"RegPass"="147852369"
具体算法不知道,这都是在调试时自己看到的.求大家指教下,谢谢!
------------------------------------------------------------------------
【版权声明】本文出自Dxer,如需转载之类的.请注意说明本文来自飘云阁论坛.
我们都爱月姐姐 沙发自己坐,免得被GG大哥抢了 真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是如果验证码长度不足4,就取不了那么长了。。。于是就fail了 F8LEFT 发表于 2015-3-15 11:49
真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是 ...
多谢F8大侠指导,我再去OD里调试看看。{:soso_e181:}感激不尽
F8LEFT 发表于 2015-3-15 11:49
真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是 ...
刚google了一下,strsub()从什么位置开始截取字符段长度,strlen字符组 计数器。是这个意思吗?然后再重新走一次,看看是不是这样来进行的。 这个算法眼熟。。。貌似还写过注册机 zaas 发表于 2015-3-15 18:33
这个算法眼熟。。。貌似还写过注册机
{:soso_e121:}大Z哥,必须有kegen的。
算法都出来了 期待keygen wgz001 发表于 2015-3-20 14:02
算法都出来了 期待keygen
{:soso_e120:}我不会告诉你QS帮我写出来了
Dxer 发表于 2015-3-20 18:36
我不会告诉你QS帮我写出来了
上源码吧 让我也学习一下啊 {:soso_e102:}
页:
[1]
2