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 跟着学习中!好久没有搞这个了!跟着N大回顾 MOV 发表于 2014-3-4 16:51
跟着学习中!好久没有搞这个了!跟着N大回顾
玩的方法还有很多种,比如说可以直接分析该配置文件格式,因为配置中只有用户名和公司,将这两项写入就会显示注册;也可以将算法Call的代码A下来,然后写个穷举去调用 9999 次,就可以把所有的Key都枚举出来了;也可以将启动时对Keyfile的验证时将用户名 Path 进去 ... 各种好玩的破解方案都可选择 。
恩!等下我试试{:biggrin:} 分析的详细,学习。 口算一组,超级数学家。这么厉害 膜拜能“IDA算法 F5 一步到位”的大牛。 “口算一组”,看到这句话,我只有膜拜了~~~ 果然很强大,呵,有意思。。 学习算法分析。
给 Nisy 一个赞。
页:
[1]
2