Nisy 发表于 2014-3-4 16:45:25

SPX 7.0 简单分析



SPX 7.0
网盘下载:http://yunpan.cn/Q4BEM3PBCzwpB


对注册码下内存访问断点,中断后来到这里:

下断方法不明了的同学请稍后看视频操作。


005FA0BF|.8B45 E4       mov   eax, dword ptr                 ;KEY
005FA0C2|.E8 25DBF5FF   call    00557BEC                               ;算法
005FA0C7|.84C0          test    al, al
005FA0C9|.0F84 8D000000 je      005FA15C                               ;关键跳




跟进算法CALL:

00557BEC/$55            push    ebp
00557BED|.8BEC          mov   ebp, esp
00557BEF|.83C4 CC       add   esp, -34
00557BF2|.33D2          xor   edx, edx
00557BF4|.8955 CC       mov   dword ptr , edx
00557BF7|.8955 D0       mov   dword ptr , edx
00557BFA|.8955 D4       mov   dword ptr , edx
00557BFD|.8955 D8       mov   dword ptr , edx
00557C00|.8955 DC       mov   dword ptr , edx
00557C03|.8945 FC       mov   dword ptr , eax
00557C06|.8B45 FC       mov   eax, dword ptr
00557C09|.E8 8EF3EAFF   call    00406F9C
00557C0E|.33C0          xor   eax, eax
00557C10|.55            push    ebp
00557C11|.68 677D5500   push    00557D67
00557C16|.64:FF30       push    dword ptr fs:
00557C19|.64:8920       mov   dword ptr fs:, esp
00557C1C|.C645 FB 00    mov   byte ptr , 0
00557C20|.8D55 DC       lea   edx, dword ptr
00557C23|.8B45 FC       mov   eax, dword ptr
00557C26|.E8 7562ECFF   call    0041DEA0                               ;肃清前缀
00557C2B|.8B55 DC       mov   edx, dword ptr
00557C2E|.8D45 FC       lea   eax, dword ptr
00557C31|.E8 AAF6EAFF   call    004072E0
00557C36|.8B45 FC       mov   eax, dword ptr
00557C39|.8945 E4       mov   dword ptr , eax
00557C3C|.837D E4 00    cmp   dword ptr , 0
00557C40|.74 0B         je      short 00557C4D
00557C42|.8B45 E4       mov   eax, dword ptr
00557C45|.83E8 04       sub   eax, 4
00557C48|.8B00          mov   eax, dword ptr
00557C4A|.8945 E4       mov   dword ptr , eax
00557C4D|>837D E4 04    cmp   dword ptr , 4
00557C51|.0F85 ED000000 jnz   00557D44                               ;长度==4
00557C57|.8D45 D8       lea   eax, dword ptr
00557C5A|.8B55 FC       mov   edx, dword ptr
00557C5D|.66:8B12       mov   dx, word ptr
00557C60|.E8 07FEEAFF   call    00407A6C
00557C65|.8B45 D8       mov   eax, dword ptr
00557C68|.8D55 F4       lea   edx, dword ptr
00557C6B|.E8 506AECFF   call    0041E6C0                               ;确保KEY为数字
00557C70|.84C0          test    al, al
00557C72|.0F84 CC000000 je      00557D44
00557C78|.8D45 D4       lea   eax, dword ptr
00557C7B|.8B55 FC       mov   edx, dword ptr
00557C7E|.66:8B52 02    mov   dx, word ptr
00557C82|.E8 E5FDEAFF   call    00407A6C
00557C87|.8B45 D4       mov   eax, dword ptr
00557C8A|.8D55 F0       lea   edx, dword ptr
00557C8D|.E8 2E6AECFF   call    0041E6C0
00557C92|.84C0          test    al, al
00557C94|.0F84 AA000000 je      00557D44
00557C9A|.8D45 D0       lea   eax, dword ptr
00557C9D|.8B55 FC       mov   edx, dword ptr
00557CA0|.66:8B52 04    mov   dx, word ptr
00557CA4|.E8 C3FDEAFF   call    00407A6C
00557CA9|.8B45 D0       mov   eax, dword ptr
00557CAC|.8D55 EC       lea   edx, dword ptr
00557CAF|.E8 0C6AECFF   call    0041E6C0
00557CB4|.84C0          test    al, al
00557CB6|.0F84 88000000 je      00557D44
00557CBC|.8D45 CC       lea   eax, dword ptr
00557CBF|.8B55 FC       mov   edx, dword ptr
00557CC2|.66:8B52 06    mov   dx, word ptr
00557CC6|.E8 A1FDEAFF   call    00407A6C
00557CCB|.8B45 CC       mov   eax, dword ptr
00557CCE|.8D55 E8       lea   edx, dword ptr
00557CD1|.E8 EA69ECFF   call    0041E6C0
00557CD6|.84C0          test    al, al
00557CD8|.74 6A         je      short 00557D44
00557CDA|.837D F4 00    cmp   dword ptr , 0                   ;依次保存的四个数值
00557CDE|.74 64         je      short 00557D44
00557CE0|.837D F0 00    cmp   dword ptr , 0
00557CE4|.74 5E         je      short 00557D44
00557CE6|.837D EC 00    cmp   dword ptr , 0
00557CEA|.74 58         je      short 00557D44
00557CEC|.837D E8 00    cmp   dword ptr , 0
00557CF0|.74 52         je      short 00557D44
00557CF2|.8B45 F4       mov   eax, dword ptr                ;偶数
00557CF5|.25 01000080   and   eax, 80000001
00557CFA|.79 05         jns   short 00557D01
00557CFC|.48            dec   eax
00557CFD|.83C8 FE       or      eax, FFFFFFFE
00557D00|.40            inc   eax
00557D01|>85C0          test    eax, eax
00557D03|.75 3F         jnz   short 00557D44
00557D05|.8B45 F0       mov   eax, dword ptr                 ;偶数
00557D08|.25 01000080   and   eax, 80000001
00557D0D|.79 05         jns   short 00557D14
00557D0F|.48            dec   eax
00557D10|.83C8 FE       or      eax, FFFFFFFE
00557D13|.40            inc   eax
00557D14|>85C0          test    eax, eax
00557D16|.75 2C         jnz   short 00557D44                         ;基数
00557D18|.8B45 EC       mov   eax, dword ptr
00557D1B|.25 01000080   and   eax, 80000001
00557D20|.79 05         jns   short 00557D27
00557D22|.48            dec   eax
00557D23|.83C8 FE       or      eax, FFFFFFFE
00557D26|.40            inc   eax
00557D27|>48            dec   eax
00557D28|.75 1A         jnz   short 00557D44
00557D2A|.8B45 F4       mov   eax, dword ptr
00557D2D|.0345 F0       add   eax, dword ptr
00557D30|.0345 EC       add   eax, dword ptr                 ;前三位的和
00557D33|.B9 0A000000   mov   ecx, 0A                              ;除以10
00557D38|.99            cdq
00557D39|.F7F9          idiv    ecx
00557D3B|.3B55 E8       cmp   edx, dword ptr                 ;余数 == 第四位
00557D3E|.75 04         jnz   short 00557D44
00557D40|.C645 FB 01    mov   byte ptr , 1
00557D44|>33C0          xor   eax, eax
00557D46|.5A            pop   edx
00557D47|.59            pop   ecx
00557D48|.59            pop   ecx
00557D49|.64:8910       mov   dword ptr fs:, edx
00557D4C|.68 6E7D5500   push    00557D6E
00557D51|>8D45 CC       lea   eax, dword ptr
00557D54|.BA 05000000   mov   edx, 5
00557D59|.E8 BAF1EAFF   call    00406F18
00557D5E|.8D45 FC       lea   eax, dword ptr
00557D61|.E8 52F1EAFF   call    00406EB8
00557D66\.C3            retn
00557D67   .^ E9 70E7EAFF   jmp   004064DC
00557D6C   .^ EB E3         jmp   short 00557D51
00557D6E   .8A45 FB       mov   al, byte ptr
00557D71   .8BE5          mov   esp, ebp
00557D73   .5D            pop   ebp
00557D74   .C3            retn





IDA算法 F5 一步到位:
if ( v20 && v19 && v18 && v17 && !(v20 % 2) && !(v19 % 2) && v18 % 2 == 1 && (v18 + v19 + v20) % 10 == v17 )
            v21 = 1;


口算一组KEY:
Full Name: Nisy
Company: Bbs.ChinaPYG.CoM
SerialNo : 2417

注册信息保存在这里:
C:\Users\XXX\AppData\Local\SPX\config.dat

MOV 发表于 2014-3-4 16:51:57

跟着学习中!好久没有搞这个了!跟着N大回顾

Nisy 发表于 2014-3-4 17:05:08

MOV 发表于 2014-3-4 16:51
跟着学习中!好久没有搞这个了!跟着N大回顾

玩的方法还有很多种,比如说可以直接分析该配置文件格式,因为配置中只有用户名和公司,将这两项写入就会显示注册;也可以将算法Call的代码A下来,然后写个穷举去调用 9999 次,就可以把所有的Key都枚举出来了;也可以将启动时对Keyfile的验证时将用户名 Path 进去 ... 各种好玩的破解方案都可选择 。

MOV 发表于 2014-3-4 17:32:49

恩!等下我试试{:biggrin:}

飞天 发表于 2014-3-5 08:16:24

分析的详细,学习。

cdygr 发表于 2014-3-5 15:00:18

口算一组,超级数学家。这么厉害

montana 发表于 2014-3-5 19:26:05

膜拜能“IDA算法 F5 一步到位”的大牛。

pentium450 发表于 2014-3-5 22:44:18

“口算一组”,看到这句话,我只有膜拜了~~~

yosen2001 发表于 2014-3-6 10:10:06

果然很强大,呵,有意思。。

zenix 发表于 2014-3-14 14:27:33

学习算法分析。

给 Nisy 一个赞。
页: [1] 2
查看完整版本: SPX 7.0 简单分析