首页
社区
课程
招聘
[原创]不用IDA,从高级语言的角度分析VSuite Ramdisk(服务器版)的本地注册算法
发表于: 2011-2-25 21:40 14470

[原创]不用IDA,从高级语言的角度分析VSuite Ramdisk(服务器版)的本地注册算法

2011-2-25 21:40
14470

【文章标题】: 不用IDA,从高级语言的角度分析VSuite Ramdisk(服务器版)的本地注册算法
【文章作者】: zouzhiyong
【作者邮箱】: zzydog@foxmail.com
【软件名称】: VSuite Ramdisk (服务器版)
【软件大小】: 1.44 MB
【下载地址】: http://www.romexsoftware.com/download/VSuite.Ramdisk.Srv.Setup.zip.html
【加壳方式】: 没有加壳
【保护方式】: KeyFile+ID序列
【编写语言】: Microsoft Visual Studio .NET 2005 -- 2008
【使用工具】: OD+Peid+Windows记事本 Notepad2+破解辅助计算器
【操作平台】: Windows 7
【软件介绍】: 是把系统内存划出一部分当作硬盘使用,建立一个虚拟磁盘。

    其实有点标题党了,只是在R3层的分析。并没有很高深的知识,只是基础知识而已,让大家失望了,请原谅我这个无知的菜鸟吧!
   
    最近买了一条2G的内存,内存空间多了,就想到把内存分割成一个硬盘使用,便下载了这个软件,其实有免费版本的,只
是自己有点变态,总想“强奸”它的最高级版~,因此便下载了服务器版下来分析。
    我看了很多分析文章的都是基于汇编来做说明,经常拿寄存器来做运算说明的,这样是比较抽象和难懂的,因为程序是用
高级语言写的嘛。由于程序比较好分析(其实有很多问题没有理解和深究的,在后面我会说明),我尝试不用IDA,从高级语言
的角度去分析软件的注册算法。希望大家喜欢这样的分析。

【分析过程】:
    使用PEID查了一下,Microsoft Visual Studio .NET 2005 -- 2008写的,没有加壳,心里一下子兴奋起来,这样
才不拒人于门外嘛~~~。
   
    好,废话一大堆了,下面是整个过程,其中文字说明的比较少,多数为伪代码的注释。
   
    注册流程比较标准,通过下bp MessageBoxW,不断返回就可以到达注册函数:
   
*********************     总体流程函数分析     *************************

00442760  /.  55            PUSH EBP
00442761  |.  8BEC          MOV EBP,ESP
00442763  |.  6A FF         PUSH -1
00442765  |.  68 7B844500   PUSH rxvsrdsr.0045847B
0044276A  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00442770  |.  50            PUSH EAX
00442771  |.  83EC 14       SUB ESP,14
00442774  |.  A1 50184700   MOV EAX,DWORD PTR DS:[471850]
00442779  |.  33C5          XOR EAX,EBP
0044277B  |.  50            PUSH EAX
0044277C  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
0044277F  |.  64:A3 0000000>MOV DWORD PTR FS:[0],EAX
00442785  |.  894D E8       MOV DWORD PTR SS:[EBP-18],ECX
00442788  |.  6A 01         PUSH 1
0044278A  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]
0044278D  |.  E8 1961FCFF   CALL rxvsrdsr.004088AB
00442792  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
00442795  |.  83B8 8C000000>CMP DWORD PTR DS:[EAX+8C],0
0044279C  |.  75 0D         JNZ SHORT rxvsrdsr.004427AB
0044279E  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]
004427A1  |.  E8 5AFAFFFF   CALL rxvsrdsr.00442200
004427A6  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
004427A9  |.  EB 0B         JMP SHORT rxvsrdsr.004427B6
004427AB  |>  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]
004427AE  |.  E8 EDF4FFFF   CALL rxvsrdsr.00441CA0                   ;  //这里是算法CALL,并且是带有错误提示的
004427B3  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
004427B6  |>  837D F0 00    CMP DWORD PTR SS:[EBP-10],0              ;  //判断注册是否成功
004427BA  |.  74 4E         JE SHORT rxvsrdsr.0044280A               ;  //这里是最外部的爆破点,但是不能修改这,因为上面的算法CALL已经提示错误了
004427BC  |.  68 C1000000   PUSH 0C1                                 ; /Arg1 = 000000C1
004427C1  |.  8D4D EC       LEA ECX,DWORD PTR SS:[EBP-14]            ; |
004427C4  |.  E8 E7FAFBFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
004427C9  |.  8945 E4       MOV DWORD PTR SS:[EBP-1C],EAX
004427CC  |.  8B4D E4       MOV ECX,DWORD PTR SS:[EBP-1C]
004427CF  |.  894D E0       MOV DWORD PTR SS:[EBP-20],ECX
004427D2  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
004427D9  |.  6A 00         PUSH 0
004427DB  |.  6A 00         PUSH 0
004427DD  |.  8B4D E0       MOV ECX,DWORD PTR SS:[EBP-20]
004427E0  |.  E8 4BFEFBFF   CALL rxvsrdsr.00402630
004427E5  |.  50            PUSH EAX                                 ; |Arg1
004427E6  |.  E8 70C2FCFF   CALL rxvsrdsr.0040EA5B                   ; \rxvsrdsr.0040EA5B
004427EB  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
004427F2  |.  8D4D EC       LEA ECX,DWORD PTR SS:[EBP-14]
004427F5  |.  E8 06F2FBFF   CALL rxvsrdsr.00401A00
004427FA  |.  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]
004427FD  |.  8B02          MOV EAX,DWORD PTR DS:[EDX]
004427FF  |.  8B4D E8       MOV ECX,DWORD PTR SS:[EBP-18]
00442802  |.  8B90 58010000 MOV EDX,DWORD PTR DS:[EAX+158]
00442808  |.  FFD2          CALL EDX
0044280A  |>  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
0044280D  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
00442814  |.  59            POP ECX
00442815  |.  8BE5          MOV ESP,EBP
00442817  |.  5D            POP EBP
00442818  \.  C3            RETN
00441CA0  /$  55            PUSH EBP
00441CA1  |.  8BEC          MOV EBP,ESP
00441CA3  |.  6A FF         PUSH -1
00441CA5  |.  68 D5774500   PUSH rxvsrdsr.004577D5
00441CAA  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00441CB0  |.  50            PUSH EAX
00441CB1  |.  81EC F8000000 SUB ESP,0F8
00441CB7  |.  A1 50184700   MOV EAX,DWORD PTR DS:[471850]
00441CBC  |.  33C5          XOR EAX,EBP
00441CBE  |.  8945 F0       MOV DWORD PTR SS:[EBP-10],EAX
00441CC1  |.  50            PUSH EAX
00441CC2  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00441CC5  |.  64:A3 0000000>MOV DWORD PTR FS:[0],EAX
00441CCB  |.  898D 14FFFFFF MOV DWORD PTR SS:[EBP-EC],ECX
00441CD1  |.  8B85 14FFFFFF MOV EAX,DWORD PTR SS:[EBP-EC]            ;  (Initial CPU selection)
00441CD7  |.  83B8 90000000>CMP DWORD PTR DS:[EAX+90],0
00441CDE  |.  75 1D         JNZ SHORT rxvsrdsr.00441CFD
00441CE0  |.  6A 10         PUSH 10
00441CE2  |.  8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]
00441CE8  |.  83C1 74       ADD ECX,74
00441CEB  |.  51            PUSH ECX
00441CEC  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
00441CEF  |.  52            PUSH EDX
00441CF0  |.  E8 8B4CFEFF   CALL rxvsrdsr.00426980
00441CF5  |.  83C4 0C       ADD ESP,0C
00441CF8  |.  E9 61010000   JMP rxvsrdsr.00441E5E
00441CFD  |>  68 E4154600   PUSH rxvsrdsr.004615E4                   ; /Arg1 = 004615E4
00441D02  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]            ; |
00441D08  |.  E8 A305FCFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
00441D0D  |.  C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
00441D14  |.  8D85 34FFFFFF LEA EAX,DWORD PTR SS:[EBP-CC]
00441D1A  |.  50            PUSH EAX                                 ; /Arg1
00441D1B  |.  68 23040000   PUSH 423                                 ; |/Arg1 = 00000423
00441D20  |.  8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]            ; ||
00441D26  |.  E8 4AA1FCFF   CALL rxvsrdsr.0040BE75                   ; |\rxvsrdsr.0040BE75
00441D2B  |.  8BC8          MOV ECX,EAX                              ; |
00441D2D  |.  E8 E284FCFF   CALL rxvsrdsr.0040A214                   ; \//获取用户ID
00441D32  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]
00441D38  |.  51            PUSH ECX                                 ; /Arg1
00441D39  |.  E8 722F0100   CALL rxvsrdsr.00454CB0                   ; \//注册用户ID序列合法性检测
00441D3E  |.  83C4 04       ADD ESP,4
00441D41  |.  85C0          TEST EAX,EAX
00441D43  |.  75 71         JNZ SHORT rxvsrdsr.00441DB6              ;  //判断注册用户ID是否合法,合法就跳
00441D45  |.  68 00010000   PUSH 100                                 ; /Arg1 = 00000100
00441D4A  |.  8D8D 30FFFFFF LEA ECX,DWORD PTR SS:[EBP-D0]            ; |
00441D50  |.  E8 5B05FCFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
00441D55  |.  8985 10FFFFFF MOV DWORD PTR SS:[EBP-F0],EAX
00441D5B  |.  8B95 10FFFFFF MOV EDX,DWORD PTR SS:[EBP-F0]
00441D61  |.  8995 0CFFFFFF MOV DWORD PTR SS:[EBP-F4],EDX
00441D67  |.  C645 FC 01    MOV BYTE PTR SS:[EBP-4],1
00441D6B  |.  6A 00         PUSH 0
00441D6D  |.  6A 10         PUSH 10
00441D6F  |.  8B8D 0CFFFFFF MOV ECX,DWORD PTR SS:[EBP-F4]
00441D75  |.  E8 B608FCFF   CALL rxvsrdsr.00402630
00441D7A  |.  50            PUSH EAX                                 ; |Arg1
00441D7B  |.  E8 DBCCFCFF   CALL rxvsrdsr.0040EA5B                   ; \//这里提示错误,如果注册用户ID不合法的就在这里提示错误
00441D80  |.  C645 FC 00    MOV BYTE PTR SS:[EBP-4],0
00441D84  |.  8D8D 30FFFFFF LEA ECX,DWORD PTR SS:[EBP-D0]
00441D8A  |.  E8 71FCFBFF   CALL rxvsrdsr.00401A00
00441D8F  |.  C785 2CFFFFFF>MOV DWORD PTR SS:[EBP-D4],0
00441D99  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00441DA0  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]
00441DA6  |.  E8 55FCFBFF   CALL rxvsrdsr.00401A00
00441DAB  |.  8B85 2CFFFFFF MOV EAX,DWORD PTR SS:[EBP-D4]
00441DB1  |.  E9 AF010000   JMP rxvsrdsr.00441F65
00441DB6  |>  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
00441DB9  |.  50            PUSH EAX                                 ; /Arg2
00441DBA  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]            ; |
00441DC0  |.  51            PUSH ECX                                 ; |Arg1
00441DC1  |.  E8 7A330100   CALL rxvsrdsr.00455140                   ; \//将注册码转换成HEX数据,假设存放在InputUserIdHex[16],
                                                                        //其实这个函数不用跟入,看返回值EAX就可以知道它的功能
00441DC6  |.  83C4 08       ADD ESP,8
00441DC9  |.  0FB655 E0     MOVZX EDX,BYTE PTR SS:[EBP-20]
00441DCD  |.  83FA 56       CMP EDX,56                               ;  //InputUserIdHex[0] == 56h? ,表明InputUserId前两个字符可以是"56"
00441DD0  |.  74 7A         JE SHORT rxvsrdsr.00441E4C               ;  //符合要求就继续注册
00441DD2  |.  0FB645 E0     MOVZX EAX,BYTE PTR SS:[EBP-20]
00441DD6  |.  83F8 55       CMP EAX,55                               ;  //InputUserIdHex[0] == 55h?,表明InputUserId前两个字符还可以是"55"
00441DD9  |.  74 71         JE SHORT rxvsrdsr.00441E4C               ;  //符合要求就继续注册
00441DDB  |.  68 00010000   PUSH 100                                 ; /Arg1 = 00000100
00441DE0  |.  8D8D 28FFFFFF LEA ECX,DWORD PTR SS:[EBP-D8]            ; |
00441DE6  |.  E8 C504FCFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
00441DEB  |.  8985 08FFFFFF MOV DWORD PTR SS:[EBP-F8],EAX
00441DF1  |.  8B8D 08FFFFFF MOV ECX,DWORD PTR SS:[EBP-F8]
00441DF7  |.  898D 04FFFFFF MOV DWORD PTR SS:[EBP-FC],ECX
00441DFD  |.  C645 FC 02    MOV BYTE PTR SS:[EBP-4],2
00441E01  |.  6A 00         PUSH 0
00441E03  |.  6A 10         PUSH 10
00441E05  |.  8B8D 04FFFFFF MOV ECX,DWORD PTR SS:[EBP-FC]
00441E0B  |.  E8 2008FCFF   CALL rxvsrdsr.00402630
00441E10  |.  50            PUSH EAX                                 ; |Arg1
00441E11  |.  E8 45CCFCFF   CALL rxvsrdsr.0040EA5B                   ; \//当InputUserId前个字符不为"55"或者是"56"的时候就提示用户ID不合法
00441E16  |.  C645 FC 00    MOV BYTE PTR SS:[EBP-4],0
00441E1A  |.  8D8D 28FFFFFF LEA ECX,DWORD PTR SS:[EBP-D8]
00441E20  |.  E8 DBFBFBFF   CALL rxvsrdsr.00401A00
00441E25  |.  C785 24FFFFFF>MOV DWORD PTR SS:[EBP-DC],0
00441E2F  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00441E36  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]
00441E3C  |.  E8 BFFBFBFF   CALL rxvsrdsr.00401A00
00441E41  |.  8B85 24FFFFFF MOV EAX,DWORD PTR SS:[EBP-DC]
00441E47  |.  E9 19010000   JMP rxvsrdsr.00441F65
00441E4C  |>  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00441E53  |.  8D8D 34FFFFFF LEA ECX,DWORD PTR SS:[EBP-CC]
00441E59  |.  E8 A2FBFBFF   CALL rxvsrdsr.00401A00
00441E5E  |>  68 E8154600   PUSH rxvsrdsr.004615E8                   ; /Arg1 = 004615E8
00441E63  |.  8D8D 38FFFFFF LEA ECX,DWORD PTR SS:[EBP-C8]            ; |
00441E69  |.  E8 4204FCFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
00441E6E  |.  C745 FC 03000>MOV DWORD PTR SS:[EBP-4],3
00441E75  |.  8D95 38FFFFFF LEA EDX,DWORD PTR SS:[EBP-C8]
00441E7B  |.  52            PUSH EDX                                 ; /Arg1
00441E7C  |.  68 20040000   PUSH 420                                 ; |/Arg1 = 00000420
00441E81  |.  8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]            ; ||
00441E87  |.  E8 E99FFCFF   CALL rxvsrdsr.0040BE75                   ; |\rxvsrdsr.0040BE75
00441E8C  |.  8BC8          MOV ECX,EAX                              ; |
00441E8E  |.  E8 8183FCFF   CALL rxvsrdsr.0040A214                   ; \//读取KEY文件所在路径
00441E93  |.  8D85 3CFFFFFF LEA EAX,DWORD PTR SS:[EBP-C4]
00441E99  |.  50            PUSH EAX                                 ; /Arg2
00441E9A  |.  8D8D 38FFFFFF LEA ECX,DWORD PTR SS:[EBP-C8]            ; |
00441EA0  |.  51            PUSH ECX                                 ; |Arg1
00441EA1  |.  8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]            ; |
00441EA7  |.  E8 04F1FFFF   CALL rxvsrdsr.00440FB0                   ; \//读取注册文件数据,对数据有大小,格式的限制,需要跟入
00441EAC  |.  85C0          TEST EAX,EAX                             ;  //KEY文件数据是否符合要求
00441EAE  |.  75 6E         JNZ SHORT rxvsrdsr.00441F1E              ;  //符合要求的就跳走,继续注册
00441EB0  |.  68 BF000000   PUSH 0BF                                 ; /Arg1 = 000000BF
00441EB5  |.  8D8D 20FFFFFF LEA ECX,DWORD PTR SS:[EBP-E0]            ; |
00441EBB  |.  E8 F003FCFF   CALL rxvsrdsr.004022B0                   ; \rxvsrdsr.004022B0
00441EC0  |.  8985 00FFFFFF MOV DWORD PTR SS:[EBP-100],EAX
00441EC6  |.  8B95 00FFFFFF MOV EDX,DWORD PTR SS:[EBP-100]
00441ECC  |.  8995 FCFEFFFF MOV DWORD PTR SS:[EBP-104],EDX
00441ED2  |.  C645 FC 04    MOV BYTE PTR SS:[EBP-4],4
00441ED6  |.  6A 00         PUSH 0
00441ED8  |.  6A 10         PUSH 10
00441EDA  |.  8B8D FCFEFFFF MOV ECX,DWORD PTR SS:[EBP-104]
00441EE0  |.  E8 4B07FCFF   CALL rxvsrdsr.00402630
00441EE5  |.  50            PUSH EAX                                 ; |Arg1
00441EE6  |.  E8 70CBFCFF   CALL rxvsrdsr.0040EA5B                   ; \//如果KEY文件数据格式不符合要求就提示KEY文件无效
00441EEB  |.  C645 FC 03    MOV BYTE PTR SS:[EBP-4],3
00441EEF  |.  8D8D 20FFFFFF LEA ECX,DWORD PTR SS:[EBP-E0]
00441EF5  |.  E8 06FBFBFF   CALL rxvsrdsr.00401A00
00441EFA  |.  C785 1CFFFFFF>MOV DWORD PTR SS:[EBP-E4],0
00441F04  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00441F0B  |.  8D8D 38FFFFFF LEA ECX,DWORD PTR SS:[EBP-C8]
00441F11  |.  E8 EAFAFBFF   CALL rxvsrdsr.00401A00
00441F16  |.  8B85 1CFFFFFF MOV EAX,DWORD PTR SS:[EBP-E4]
00441F1C  |.  EB 47         JMP SHORT rxvsrdsr.00441F65
00441F1E  |>  8B85 14FFFFFF MOV EAX,DWORD PTR SS:[EBP-EC]
00441F24  |.  33C9          XOR ECX,ECX
00441F26  |.  83B8 90000000>CMP DWORD PTR DS:[EAX+90],1
00441F2D  |.  0F94C1        SETE CL
00441F30  |.  51            PUSH ECX
00441F31  |.  8D55 E0       LEA EDX,DWORD PTR SS:[EBP-20]
00441F34  |.  52            PUSH EDX
00441F35  |.  8D85 3CFFFFFF LEA EAX,DWORD PTR SS:[EBP-C4]
00441F3B  |.  50            PUSH EAX
00441F3C  |.  8B8D 14FFFFFF MOV ECX,DWORD PTR SS:[EBP-EC]
00441F42  |.  E8 F9F6FFFF   CALL rxvsrdsr.00441640                   ;  //*************这里是整个本地注册的核心算法***************
00441F47  |.  8985 18FFFFFF MOV DWORD PTR SS:[EBP-E8],EAX
00441F4D  |.  C745 FC FFFFF>MOV DWORD PTR SS:[EBP-4],-1
00441F54  |.  8D8D 38FFFFFF LEA ECX,DWORD PTR SS:[EBP-C8]
00441F5A  |.  E8 A1FAFBFF   CALL rxvsrdsr.00401A00
00441F5F  |.  8B85 18FFFFFF MOV EAX,DWORD PTR SS:[EBP-E8]
00441F65  |>  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
00441F68  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
00441F6F  |.  59            POP ECX
00441F70  |.  8B4D F0       MOV ECX,DWORD PTR SS:[EBP-10]
00441F73  |.  33CD          XOR ECX,EBP
00441F75  |.  E8 1544FEFF   CALL rxvsrdsr.0042638F
00441F7A  |.  8BE5          MOV ESP,EBP
00441F7C  |.  5D            POP EBP
00441F7D  \.  C3            RETN

00454CB0  /$  55            PUSH EBP
00454CB1  |.  8BEC          MOV EBP,ESP
00454CB3  |.  83EC 08       SUB ESP,8
00454CB6  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00454CB9  |.  E8 C2C3FAFF   CALL rxvsrdsr.00401080
00454CBE  |.  0FB6C0        MOVZX EAX,AL
00454CC1  |.  85C0          TEST EAX,EAX
00454CC3  |.  74 04         JE SHORT rxvsrdsr.00454CC9
00454CC5  |.  33C0          XOR EAX,EAX
00454CC7  |.  EB 6B         JMP SHORT rxvsrdsr.00454D34
00454CC9  |>  C745 FC 23000>MOV DWORD PTR SS:[EBP-4],23              ;  //DWORD UserIdLen = 35,注册用户ID为35个字符
00454CD0  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]
00454CD3  |.  E8 A8C4FAFF   CALL rxvsrdsr.00401180                   ;  //这里取注册用户ID长度
00454CD8  |.  3B45 FC       CMP EAX,DWORD PTR SS:[EBP-4]             ;  //输入的注册用户ID长度是否等于35
00454CDB  |.  74 04         JE SHORT rxvsrdsr.00454CE1
00454CDD  |.  33C0          XOR EAX,EAX
00454CDF  |.  EB 53         JMP SHORT rxvsrdsr.00454D34
00454CE1  |>  C745 F8 00000>MOV DWORD PTR SS:[EBP-8],0               ;  //DWORD nIndex = NULL
00454CE8  |.  EB 09         JMP SHORT rxvsrdsr.00454CF3
00454CEA  |>  8B4D F8       /MOV ECX,DWORD PTR SS:[EBP-8]
00454CED  |.  83C1 01       |ADD ECX,1
00454CF0  |.  894D F8       |MOV DWORD PTR SS:[EBP-8],ECX
00454CF3  |>  8B55 F8        MOV EDX,DWORD PTR SS:[EBP-8]
00454CF6  |.  3B55 FC       |CMP EDX,DWORD PTR SS:[EBP-4]            ;  //nIndex >= UserIdLen ?
00454CF9  |.  7D 34         |JGE SHORT rxvsrdsr.00454D2F
00454CFB  |.  837D F8 08    |CMP DWORD PTR SS:[EBP-8],8              ;  //忽略InputUserId[8],字符'-'
00454CFF  |.  74 2C         |JE SHORT rxvsrdsr.00454D2D
00454D01  |.  837D F8 11    |CMP DWORD PTR SS:[EBP-8],11             ;  //忽略InputUserId[11h],字符'-'
00454D05  |.  74 26         |JE SHORT rxvsrdsr.00454D2D
00454D07  |.  837D F8 1A    |CMP DWORD PTR SS:[EBP-8],1A             ;  //忽略InputUserId[1AH],字符'-'
00454D0B  |.  74 20         |JE SHORT rxvsrdsr.00454D2D
00454D0D  |.  8B45 F8       |MOV EAX,DWORD PTR SS:[EBP-8]
00454D10  |.  50            |PUSH EAX                                ; /Arg1
00454D11  |.  8B4D 08       |MOV ECX,DWORD PTR SS:[EBP+8]            ; |
00454D14  |.  E8 E7C2FAFF   |CALL rxvsrdsr.00401000                  ; \//DWORD FlagIndex = InputUserId[nIndex]
00454D19  |.  0FB7C8        |MOVZX ECX,AX
00454D1C  |.  51            |PUSH ECX                                ; /Arg1
00454D1D  |.  E8 2F18FDFF   |CALL rxvsrdsr.00426551                  ; \//返回FlagHexData[FlagIndex] AND 80,
                                                                        //实际上是限制InputUserId[nIndex]字符范围是:0~9 ,A~F,a~f
00454D22  |.  83C4 04       |ADD ESP,4
00454D25  |.  85C0          |TEST EAX,EAX                            ;  //判断InputUserId[nIndex]是否符合范围
00454D27  |.  75 04         |JNZ SHORT rxvsrdsr.00454D2D
00454D29  |.  33C0          |XOR EAX,EAX
00454D2B  |.  EB 07         |JMP SHORT rxvsrdsr.00454D34
00454D2D  |>^ EB BB         \JMP SHORT rxvsrdsr.00454CEA
00454D2F  |>  B8 01000000   MOV EAX,1
00454D34  |>  8BE5          MOV ESP,EBP
00454D36  |.  5D            POP EBP
00454D37  \.  C3            RETN

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 155
活跃值: (20)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
沙发啊!!!!
2011-2-25 22:05
0
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
因为算法都在那个驱动文件里面,你要分析驱动才行
2011-2-28 17:03
0
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
其实是猜到真正的算法在RING0进行~~,可惜在驱动分析能力完全不行~~
2011-2-28 21:19
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
5
zwt 有 keygen
2011-2-28 21:23
0
雪    币: 216
活跃值: (144)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
6
多谢cntrump大大~
2011-2-28 21:45
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
能分享下吗 找不到谢谢
2011-3-11 08:14
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
求注册机下载地址
2011-3-11 08:40
0
雪    币: 442
活跃值: (287)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
只看到SuperSpeed ramdisk zwt有keygen,求楼主说的这个的下载.
2011-3-12 13:55
0
雪    币: 1371
活跃值: (150)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
此软件底层注册保护做的很好,网上出现的破解补丁均不能让软件超出试用期使用,所以到现在根本没有注册机放出!
2011-4-12 16:39
0
雪    币: 7862
活跃值: (2592)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
求注册机下载地址
2011-11-24 10:15
0
游客
登录 | 注册 方可回帖
返回
//