《系统优化大师》的简单分析
【破文标题】《系统优化大师》的简单分析【破文作者】水中花
【作者邮箱】[email protected]
【作者主页】
【破解工具】peid+od+
【破解平台】xp2
【软件名称】系统优化大师
【软件大小】
【原版下载】http://shareware.skycn.com/soft/6177.htm
【保护方式】壳+序列号
【软件简介】〖系统优化大师〗软件全方位、高效、安全地提高你的系统性能,软件使用简单,傻瓜式操作,使用本软件可能迅速达到系统优化目的。包括桌面优化、菜单优化、网络优化、软件优化、系统优化以及禁用设置、选择设置、更改设置等一系列个性化优化及设置选项。软件可以进行高速的注册表清理及高速的硬盘垃圾文件清理,清理全面、安全、不影响任何运行性能。
【破解声明】这与“半仙算命”是同一作者,但算法有较大的变化!这是我等菜鸟的分析,高手不要见笑。
------------------------------------------------------------------------
【破解过程】一、用PEID查壳,是“ASPack 2.12 -> Alexey Solodovnikov”,手动脱壳。跳过。
二、用OD载入软件,用字符串参考下断,略过,下断在此处
00548E20/.55 push ebp
00548E21|.8BEC mov ebp, esp
00548E23|.B9 18000000 mov ecx, 18
00548E28|>6A 00 /push 0
00548E2A|.6A 00 |push 0
00548E2C|.49 |dec ecx
00548E2D|.^ 75 F9 \jnz short un.00548E28
00548E2F|.51 push ecx
00548E30|.53 push ebx
00548E31|.56 push esi
00548E32|.57 push edi
00548E33|.8BD8 mov ebx, eax
00548E35|.33C0 xor eax, eax
00548E37|.55 push ebp
00548E38|.68 5E915400 push un.0054915E
00548E3D|.64:FF30 push dword ptr fs:
00548E40|.64:8920 mov dword ptr fs:, esp
00548E43|.B2 01 mov dl, 1
00548E45|.A1 F8A94700 mov eax, dword ptr
00548E4A|.E8 151DF3FF call un.0047AB64
00548E4F|.8B15 54545D00 mov edx, dword ptr ;un.005D7E0C
00548E55|.8902 mov dword ptr , eax
00548E57|.A1 54545D00 mov eax, dword ptr
00548E5C|.8B00 mov eax, dword ptr
00548E5E|.BA 02000080 mov edx, 80000002
00548E63|.E8 D81DF3FF call un.0047AC40
00548E68|.A1 54545D00 mov eax, dword ptr
00548E6D|.8B00 mov eax, dword ptr
00548E6F|.B1 01 mov cl, 1
00548E71|.BA 78915400 mov edx, un.00549178 ;ASCII "SOFTWARE\Microsoft\Yhds"
00548E76|.E8 091FF3FF call un.0047AD84
00548E7B|.68 80000000 push 80 ; /BufSize = 80 (128.)
00548E80|.8D85 7BFFFFFF lea eax, dword ptr ; |
00548E86|.50 push eax ; |Buffer
00548E87|.E8 ACE7EBFF call <jmp.&kernel32.GetSystemDirector>; \GetSystemDirectoryA
00548E8C|.8D45 FC lea eax, dword ptr
00548E8F|.8D95 7BFFFFFF lea edx, dword ptr
00548E95|.B9 81000000 mov ecx, 81
00548E9A|.E8 85BEEBFF call un.00404D24
00548E9F|.8D95 74FFFFFF lea edx, dword ptr
00548EA5|.8B83 FC020000 mov eax, dword ptr
00548EAB|.E8 8C6EF0FF call un.0044FD3C
00548EB0|.83BD 74FFFFFF>cmp dword ptr , 0
00548EB7|.74 1A je short un.00548ED3
00548EB9|.8D95 70FFFFFF lea edx, dword ptr
00548EBF|.8B83 04030000 mov eax, dword ptr
00548EC5|.E8 726EF0FF call un.0044FD3C
00548ECA|.83BD 70FFFFFF>cmp dword ptr , 0
00548ED1|.75 0F jnz short un.00548EE2
00548ED3|>B8 98915400 mov eax, un.00549198 ;注册信息没有填写齐全
00548ED8|.E8 BFFAEFFF call un.0044899C
00548EDD|.E9 DF010000 jmp un.005490C1
00548EE2|> \8D95 68FFFFFF lea edx, dword ptr
00548EE8|.8B83 04030000 mov eax, dword ptr
00548EEE|.E8 496EF0FF call un.0044FD3C
00548EF3|.8B85 68FFFFFF mov eax, dword ptr
00548EF9|.8D95 6CFFFFFF lea edx, dword ptr
00548EFF|.E8 E008ECFF call un.004097E4
00548F04|.8B85 6CFFFFFF mov eax, dword ptr
00548F0A|.50 push eax
00548F0B|.8D95 5CFFFFFF lea edx, dword ptr
00548F11|.8B83 FC020000 mov eax, dword ptr
00548F17|.E8 206EF0FF call un.0044FD3C
00548F1C|.8B85 5CFFFFFF mov eax, dword ptr 假码入EAX
00548F22|.E8 B90BECFF call un.00409AE0
00548F27|.B9 4A080000 mov ecx, 84A 84A入ECX
00548F2C|.99 cdq
00548F2D|.F7F9 idiv ecx eax/84a
00548F2F|.8BC2 mov eax, edx 余数放EAX
00548F31|.8D95 60FFFFFF lea edx, dword ptr
00548F37|.E8 C40AECFF call un.00409A00 转为十进制,入栈,作注册码第一部分A
00548F3C|.8D85 60FFFFFF lea eax, dword ptr
00548F42|.50 push eax
00548F43|.8D95 50FFFFFF lea edx, dword ptr
00548F49|.8B83 FC020000 mov eax, dword ptr
00548F4F|.E8 E86DF0FF call un.0044FD3C
00548F54|.8B85 50FFFFFF mov eax, dword ptr
00548F5A|.E8 810BECFF call un.00409AE0 ‘
00548F5F|.8D95 54FFFFFF lea edx, dword ptr
00548F65|.E8 16FCFFFF call un.00548B80 算法第一部分:
00548F6A|.8B85 54FFFFFF mov eax, dword ptr
00548F70|.E8 6B0BECFF call un.00409AE0
00548F75|.8D95 58FFFFFF lea edx, dword ptr
00548F7B|.E8 E0FCFFFF call un.00548C60 :算法第二部分
00548F80|.8B95 58FFFFFF mov edx, dword ptr
00548F86|.58 pop eax
00548F87|.E8 F0BDEBFF call un.00404D7C :A连上C,即为注册码
00548F8C|.8B85 60FFFFFF mov eax, dword ptr
00548F92|.8D95 64FFFFFF lea edx, dword ptr
00548F98|.E8 4708ECFF call un.004097E4
00548F9D|.8B95 64FFFFFF mov edx, dword ptr
00548FA3|.58 pop eax
00548FA4|.E8 0FBFEBFF call un.00404EB8 真假比较
00548FA9|.0F85 EE000000 jnz un.0054909D 不等,gameover
00548FAF|.8D95 4CFFFFFF lea edx, dword ptr
00548FB5|.8B83 04030000 mov eax, dword ptr
00548FBB|.E8 7C6DF0FF call un.0044FD3C 下面把正确的信息写入系统目录\system32\sy5ten.sys文件中
00548FC0|.8B8D 4CFFFFFF mov ecx, dword ptr
00548FC6|.A1 54545D00 mov eax, dword ptr
00548FCB|.8B00 mov eax, dword ptr
00548FCD|.BA B8915400 mov edx, un.005491B8 ;ASCII "yhdsger"
00548FD2|.E8 D922F3FF call un.0047B2B0
00548FD7|.8D85 48FFFFFF lea eax, dword ptr
00548FDD|.B9 C8915400 mov ecx, un.005491C8 ;ASCII "\sy5ten.sys"
00548FE2|.8B55 FC mov edx, dword ptr
00548FE5|.E8 D6BDEBFF call un.00404DC0
00548FEA|.8B8D 48FFFFFF mov ecx, dword ptr
00548FF0|.B2 01 mov dl, 1
00548FF2|.A1 A89A4700 mov eax, dword ptr
00548FF7|.E8 5C0BF3FF call un.00479B58
00548FFC|.8BF0 mov esi, eax
00548FFE|.8D95 44FFFFFF lea edx, dword ptr
00549004|.8B83 FC020000 mov eax, dword ptr
0054900A|.E8 2D6DF0FF call un.0044FD3C
0054900F|.8B85 44FFFFFF mov eax, dword ptr
00549015|.50 push eax
00549016|.B9 DC915400 mov ecx, un.005491DC ;dd
0054901B|.BA E8915400 mov edx, un.005491E8 ;syssetup
00549020|.8BC6 mov eax, esi
00549022|.8B38 mov edi, dword ptr
00549024|.FF57 04 call dword ptr
00549027|.8D95 40FFFFFF lea edx, dword ptr
0054902D|.8B83 04030000 mov eax, dword ptr
00549033|.E8 046DF0FF call un.0044FD3C
00549038|.8B85 40FFFFFF mov eax, dword ptr
0054903E|.50 push eax
0054903F|.B9 FC915400 mov ecx, un.005491FC ;zc
00549044|.BA E8915400 mov edx, un.005491E8 ;syssetup
00549049|.8BC6 mov eax, esi
0054904B|.8B30 mov esi, dword ptr
0054904D|.FF56 04 call dword ptr
00549050|.8D85 3CFFFFFF lea eax, dword ptr
00549056|.B9 C8915400 mov ecx, un.005491C8 ;ASCII "\sy5ten.sys"
0054905B|.8B55 FC mov edx, dword ptr
0054905E|.E8 5DBDEBFF call un.00404DC0
00549063|.8B85 3CFFFFFF mov eax, dword ptr
00549069|.BA 02000000 mov edx, 2
0054906E|.E8 BD0DECFF call un.00409E30
00549073|.B8 08925400 mov eax, un.00549208 ;软件注册成功!谢谢注册!
00549078|.E8 1FF9EFFF call un.0044899C
0054907D|.A1 58535D00 mov eax, dword ptr
00549082|.8B00 mov eax, dword ptr
00549084|.8B80 0C050000 mov eax, dword ptr
0054908A|.BA 2C925400 mov edx, un.0054922C ;软件已注册
0054908F|.E8 D86CF0FF call un.0044FD6C
00549094|.8BC3 mov eax, ebx
00549096|.E8 0D46F2FF call un.0046D6A8
0054909B|.EB 24 jmp short un.005490C1
0054909D|>33D2 xor edx, edx
0054909F|.8B83 04030000 mov eax, dword ptr
005490A5|.E8 C26CF0FF call un.0044FD6C
005490AA|.33D2 xor edx, edx
005490AC|.8B83 FC020000 mov eax, dword ptr
005490B2|.E8 B56CF0FF call un.0044FD6C
005490B7|.B8 40925400 mov eax, un.00549240
005490BC|.E8 DBF8EFFF call un.0044899C
005490C1|>33C0 xor eax, eax
005490C3|.5A pop edx
算法第一部分,可以参考半仙算命的算法,大概就是把假码 mod 84A 的余数与0B25F1相或,再取前两位相加mod 5 + 34, 再取2(3、4位)位加mod 5+33与0B25F1相或相连,(可参考半仙算命),设为B
第二部分内容分析:
00548C60/$55 push ebp
00548C61|.8BEC mov ebp, esp
00548C63|.33C9 xor ecx, ecx
00548C65|.51 push ecx
00548C66|.51 push ecx
00548C67|.51 push ecx
00548C68|.51 push ecx
00548C69|.51 push ecx
00548C6A|.51 push ecx
00548C6B|.53 push ebx
00548C6C|.56 push esi
00548C6D|.8BF2 mov esi, edx
00548C6F|.8BD8 mov ebx, eax
00548C71|.33C0 xor eax, eax
00548C73|.55 push ebp
00548C74|.68 AC8D5400 push un.00548DAC
00548C79|.64:FF30 push dword ptr fs:
00548C7C|.64:8920 mov dword ptr fs:, esp
00548C7F|.81F3 8776FBDD xor ebx, DDFB7687 将B与DDFB7687相或,设为以C
00548C85|.8BC3 mov eax, ebx
00548C87|.33D2 xor edx, edx
00548C89|.52 push edx ; /Arg2 => 00000000
00548C8A|.50 push eax ; |Arg1
00548C8B|.8D45 FC lea eax, dword ptr ; |
00548C8E|.E8 9D0DECFF call un.00409A30 将C 转为十进制
00548C93|.8B45 FC mov eax, dword ptr
00548C96|.0FB600 movzx eax, byte ptr 下几步取C中的第一、二位相加,设为temp1
00548C99|.8B55 FC mov edx, dword ptr
00548C9C|.0FB652 01 movzx edx, byte ptr
00548CA0|.03C2 add eax, edx
00548CA2|.B9 05000000 mov ecx, 5
00548CA7|.99 cdq
00548CA8|.F7F9 idiv ecx temp1/5
00548CAA|.80C2 66 add dl, 66 余数+66,
00548CAD|.8855 F8 mov byte ptr , dl 存入,设为a1
00548CB0|.8B45 FC mov eax, dword ptr
00548CB3|.0FB640 02 movzx eax, byte ptr 下几步取C中的第三、四位相加,设为temp2
00548CB7|.8B55 FC mov edx, dword ptr
00548CBA|.0FB652 03 movzx edx, byte ptr
00548CBE|.03C2 add eax, edx
00548CC0|.B9 05000000 mov ecx, 5
00548CC5|.99 cdq
00548CC6|.F7F9 idiv ecx temp2/5
00548CC8|.80C2 75 add dl, 75 余数+75
00548CCB|.8855 F9 mov byte ptr , dl 存入,设为a2
00548CCE|.8B45 FC mov eax, dword ptr
00548CD1|.0FB640 04 movzx eax, byte ptr 下几步取C中的第五、六位相加,设为temp3
00548CD5|.8B55 FC mov edx, dword ptr
00548CD8|.0FB652 05 movzx edx, byte ptr
00548CDC|.03C2 add eax, edx
00548CDE|.B9 05000000 mov ecx, 5
00548CE3|.99 cdq
00548CE4|.F7F9 idiv ecx temp3/5
00548CE6|.80C2 7A add dl, 7A 余数+7A
00548CE9|.8855 FA mov byte ptr , dl 存入,设为a3
00548CEC|.8B45 FC mov eax, dword ptr
00548CEF|.0FB640 06 movzx eax, byte ptr 下几步取C中的第七、八、九位相加,设为temp4
00548CF3|.8B55 FC mov edx, dword ptr
00548CF6|.0FB652 07 movzx edx, byte ptr
00548CFA|.03C2 add eax, edx
00548CFC|.8B55 FC mov edx, dword ptr
00548CFF|.0FB652 08 movzx edx, byte ptr
00548D03|.03C2 add eax, edx
00548D05|.B9 05000000 mov ecx, 5
00548D0A|.99 cdq
00548D0B|.F7F9 idiv ecx temp4/5
00548D0D|.80C2 69 add dl, 69 余数+69
00548D10|.8855 FB mov byte ptr , dl 存入[ebp-5],设为a4
00548D13|.8D45 F4 lea eax, dword ptr
00548D16|.8A55 F8 mov dl, byte ptr
00548D19|.E8 7EBFEBFF call un.00404C9C
00548D1E|.8B45 F4 mov eax, dword ptr
00548D21|.8D55 FC lea edx, dword ptr
00548D24|.B9 07000000 mov ecx, 7
00548D29|.E8 26C3EBFF call un.00405054 将a1放在C串中的第7位,成为新C
00548D2E|.8D45 F0 lea eax, dword ptr
00548D31|.8A55 FB mov dl, byte ptr
00548D34|.E8 63BFEBFF call un.00404C9C
00548D39|.8B45 F0 mov eax, dword ptr
00548D3C|.8D55 FC lea edx, dword ptr
00548D3F|.B9 03000000 mov ecx, 3
00548D44|.E8 0BC3EBFF call un.00405054 将a2放在C串中的第3位,成为新C
00548D49|.8D45 EC lea eax, dword ptr
00548D4C|.8A55 F9 mov dl, byte ptr
00548D4F|.E8 48BFEBFF call un.00404C9C
00548D54|.8B45 EC mov eax, dword ptr
00548D57|.8D55 FC lea edx, dword ptr
00548D5A|.B9 05000000 mov ecx, 5
00548D5F|.E8 F0C2EBFF call un.00405054 将a3放在C串中的第5位,成为新C
00548D64|.8D45 E8 lea eax, dword ptr
00548D67|.8A55 FA mov dl, byte ptr
00548D6A|.E8 2DBFEBFF call un.00404C9C
00548D6F|.8B45 E8 mov eax, dword ptr
00548D72|.8D55 FC lea edx, dword ptr
00548D75|.B9 09000000 mov ecx, 9
00548D7A|.E8 D5C2EBFF call un.00405054 将a4放在C串中的第9位,成为新C
00548D7F|.8BC6 mov eax, esi
00548D81|.8B55 FC mov edx, dword ptr
00548D84|.E8 87BDEBFF call un.00404B10
00548D89|.33C0 xor eax, eax
00548D8B|.5A pop edx
00548D8C|.59 pop ecx
00548D8D|.59 pop ecx
00548D8E|.64:8910 mov dword ptr fs:, edx
00548D91|.68 B38D5400 push un.00548DB3
00548D96|>8D45 E8 lea eax, dword ptr
00548D99|.BA 04000000 mov edx, 4
00548D9E|.E8 3DBDEBFF call un.00404AE0
00548DA3|.8D45 FC lea eax, dword ptr
00548DA6|.E8 11BDEBFF call un.00404ABC
00548DAB\.C3 retn
至此,算法全部分析完毕!
------------------------------------------------------------------------
【破解总结】大致的算法如下
1、假码 mod 84A 的余数为序列号的A
2、假码 mod 84A 的余数与0B25F1相或,再取前两位相加mod 5 + 34, 再取2(3、4位)位加mod 5+33与0B25F1相或相连,(可参考半仙算命),设为B
3、将B与DDFB7687相或,设为c
(1)、将B前两位相加/5,余加66 所得字符放在C中第7位
(2)、将B的3、4位相加/5,余加75 所得字符放在C中第3位
(3)、将5、6位相加/5,余加7A 所得字符放在C中第5位
(4)、将7、8、9位相加/5,余加69 所得字符放在C中第9位
4、将A与相连即为注册码
注册机我就不写了,本人的编程也差!呵呵。
------------------------------------------------------------------------ 学习了!感谢大侠分享~ 确实分析得有点儿道理。。 服啦。。。。厉害啊
学习学习
真强!好好学学! 我先去看看,好的话狠狠顶你 学习一下,不太懂阿 偶也没有看懂啊:lol: 真的很不错
页:
[1]
2