水中花 发表于 2007-1-10 13:02:53

《系统优化大师》的简单分析

【破文标题】《系统优化大师》的简单分析
【破文作者】水中花
【作者邮箱】[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与相连即为注册码

注册机我就不写了,本人的编程也差!呵呵。
------------------------------------------------------------------------

annatata 发表于 2007-1-10 13:19:20

学习了!感谢大侠分享~

x020408 发表于 2007-1-11 20:57:42

确实分析得有点儿道理。。

hero 发表于 2007-1-12 18:46:01

情天下雪 发表于 2007-1-15 18:29:21

服啦。。。。厉害啊

eopenfang 发表于 2007-1-17 13:03:55

学习学习

真强!好好学学!

ykkysysy 发表于 2007-1-17 16:27:26

我先去看看,好的话狠狠顶你

xiaohean 发表于 2007-1-17 21:12:23

学习一下,不太懂阿

非常来客 发表于 2007-1-27 00:35:23

偶也没有看懂啊:lol:

aad 发表于 2007-1-28 10:58:31

真的很不错
页: [1] 2
查看完整版本: 《系统优化大师》的简单分析