Dxer 发表于 2015-3-15 11:40:20

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,如需转载之类的.请注意说明本文来自飘云阁论坛.







我们都爱月姐姐

Dxer 发表于 2015-3-15 11:41:58

沙发自己坐,免得被GG大哥抢了

F8LEFT 发表于 2015-3-15 11:49:14

真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是如果验证码长度不足4,就取不了那么长了。。。于是就fail了

Dxer 发表于 2015-3-15 11:52:27

F8LEFT 发表于 2015-3-15 11:49
真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是 ...

多谢F8大侠指导,我再去OD里调试看看。{:soso_e181:}感激不尽

Dxer 发表于 2015-3-15 11:58:22

F8LEFT 发表于 2015-3-15 11:49
真厉害,膜拜。那几个疑问的地方前面的call难道不是strlen么,再前面是strsub,它是取验证码中的4个,但是 ...

刚google了一下,strsub()从什么位置开始截取字符段长度,strlen字符组 计数器。是这个意思吗?然后再重新走一次,看看是不是这样来进行的。

zaas 发表于 2015-3-15 18:33:56

这个算法眼熟。。。貌似还写过注册机

Dxer 发表于 2015-3-15 19:20:12

zaas 发表于 2015-3-15 18:33
这个算法眼熟。。。貌似还写过注册机

{:soso_e121:}大Z哥,必须有kegen的。

wgz001 发表于 2015-3-20 14:02:47

算法都出来了  期待keygen

Dxer 发表于 2015-3-20 18:36:35

wgz001 发表于 2015-3-20 14:02
算法都出来了  期待keygen

{:soso_e120:}我不会告诉你QS帮我写出来了

wgz001 发表于 2015-3-21 09:35:17

Dxer 发表于 2015-3-20 18:36
我不会告诉你QS帮我写出来了

上源码吧  让我也学习一下啊 {:soso_e102:}
页: [1] 2
查看完整版本: ScreenCapture算法分析