- UID
- 26554
注册时间2007-1-1
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 开心 2024-12-27 11:46 |
---|
签到天数: 33 天 [LV.5]常住居民I
|
【破文标题】《系统优化大师》的简单分析
【破文作者】水中花
【作者邮箱】[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:[eax]
00548E40 |. 64:8920 mov dword ptr fs:[eax], esp
00548E43 |. B2 01 mov dl, 1
00548E45 |. A1 F8A94700 mov eax, dword ptr [47A9F8]
00548E4A |. E8 151DF3FF call un.0047AB64
00548E4F |. 8B15 54545D00 mov edx, dword ptr [5D5454] ; un.005D7E0C
00548E55 |. 8902 mov dword ptr [edx], eax
00548E57 |. A1 54545D00 mov eax, dword ptr [5D5454]
00548E5C |. 8B00 mov eax, dword ptr [eax]
00548E5E |. BA 02000080 mov edx, 80000002
00548E63 |. E8 D81DF3FF call un.0047AC40
00548E68 |. A1 54545D00 mov eax, dword ptr [5D5454]
00548E6D |. 8B00 mov eax, dword ptr [eax]
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 [ebp-85] ; |
00548E86 |. 50 push eax ; |Buffer
00548E87 |. E8 ACE7EBFF call <jmp.&kernel32.GetSystemDirector>; \GetSystemDirectoryA
00548E8C |. 8D45 FC lea eax, dword ptr [ebp-4]
00548E8F |. 8D95 7BFFFFFF lea edx, dword ptr [ebp-85]
00548E95 |. B9 81000000 mov ecx, 81
00548E9A |. E8 85BEEBFF call un.00404D24
00548E9F |. 8D95 74FFFFFF lea edx, dword ptr [ebp-8C]
00548EA5 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
00548EAB |. E8 8C6EF0FF call un.0044FD3C
00548EB0 |. 83BD 74FFFFFF>cmp dword ptr [ebp-8C], 0
00548EB7 |. 74 1A je short un.00548ED3
00548EB9 |. 8D95 70FFFFFF lea edx, dword ptr [ebp-90]
00548EBF |. 8B83 04030000 mov eax, dword ptr [ebx+304]
00548EC5 |. E8 726EF0FF call un.0044FD3C
00548ECA |. 83BD 70FFFFFF>cmp dword ptr [ebp-90], 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 [ebp-98]
00548EE8 |. 8B83 04030000 mov eax, dword ptr [ebx+304]
00548EEE |. E8 496EF0FF call un.0044FD3C
00548EF3 |. 8B85 68FFFFFF mov eax, dword ptr [ebp-98]
00548EF9 |. 8D95 6CFFFFFF lea edx, dword ptr [ebp-94]
00548EFF |. E8 E008ECFF call un.004097E4
00548F04 |. 8B85 6CFFFFFF mov eax, dword ptr [ebp-94]
00548F0A |. 50 push eax
00548F0B |. 8D95 5CFFFFFF lea edx, dword ptr [ebp-A4]
00548F11 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
00548F17 |. E8 206EF0FF call un.0044FD3C
00548F1C |. 8B85 5CFFFFFF mov eax, dword ptr [ebp-A4] 假码入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 [ebp-A0]
00548F37 |. E8 C40AECFF call un.00409A00 转为十进制,入栈,作注册码第一部分A
00548F3C |. 8D85 60FFFFFF lea eax, dword ptr [ebp-A0]
00548F42 |. 50 push eax
00548F43 |. 8D95 50FFFFFF lea edx, dword ptr [ebp-B0]
00548F49 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
00548F4F |. E8 E86DF0FF call un.0044FD3C
00548F54 |. 8B85 50FFFFFF mov eax, dword ptr [ebp-B0]
00548F5A |. E8 810BECFF call un.00409AE0 ‘
00548F5F |. 8D95 54FFFFFF lea edx, dword ptr [ebp-AC]
00548F65 |. E8 16FCFFFF call un.00548B80 算法第一部分:
00548F6A |. 8B85 54FFFFFF mov eax, dword ptr [ebp-AC]
00548F70 |. E8 6B0BECFF call un.00409AE0
00548F75 |. 8D95 58FFFFFF lea edx, dword ptr [ebp-A8]
00548F7B |. E8 E0FCFFFF call un.00548C60 :算法第二部分
00548F80 |. 8B95 58FFFFFF mov edx, dword ptr [ebp-A8]
00548F86 |. 58 pop eax
00548F87 |. E8 F0BDEBFF call un.00404D7C :A连上C,即为注册码
00548F8C |. 8B85 60FFFFFF mov eax, dword ptr [ebp-A0]
00548F92 |. 8D95 64FFFFFF lea edx, dword ptr [ebp-9C]
00548F98 |. E8 4708ECFF call un.004097E4
00548F9D |. 8B95 64FFFFFF mov edx, dword ptr [ebp-9C]
00548FA3 |. 58 pop eax
00548FA4 |. E8 0FBFEBFF call un.00404EB8 真假比较
00548FA9 |. 0F85 EE000000 jnz un.0054909D 不等,gameover
00548FAF |. 8D95 4CFFFFFF lea edx, dword ptr [ebp-B4]
00548FB5 |. 8B83 04030000 mov eax, dword ptr [ebx+304]
00548FBB |. E8 7C6DF0FF call un.0044FD3C 下面把正确的信息写入系统目录\system32\sy5ten.sys文件中
00548FC0 |. 8B8D 4CFFFFFF mov ecx, dword ptr [ebp-B4]
00548FC6 |. A1 54545D00 mov eax, dword ptr [5D5454]
00548FCB |. 8B00 mov eax, dword ptr [eax]
00548FCD |. BA B8915400 mov edx, un.005491B8 ; ASCII "yhdsger"
00548FD2 |. E8 D922F3FF call un.0047B2B0
00548FD7 |. 8D85 48FFFFFF lea eax, dword ptr [ebp-B8]
00548FDD |. B9 C8915400 mov ecx, un.005491C8 ; ASCII "\sy5ten.sys"
00548FE2 |. 8B55 FC mov edx, dword ptr [ebp-4]
00548FE5 |. E8 D6BDEBFF call un.00404DC0
00548FEA |. 8B8D 48FFFFFF mov ecx, dword ptr [ebp-B8]
00548FF0 |. B2 01 mov dl, 1
00548FF2 |. A1 A89A4700 mov eax, dword ptr [479AA8]
00548FF7 |. E8 5C0BF3FF call un.00479B58
00548FFC |. 8BF0 mov esi, eax
00548FFE |. 8D95 44FFFFFF lea edx, dword ptr [ebp-BC]
00549004 |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
0054900A |. E8 2D6DF0FF call un.0044FD3C
0054900F |. 8B85 44FFFFFF mov eax, dword ptr [ebp-BC]
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 [eax]
00549024 |. FF57 04 call dword ptr [edi+4]
00549027 |. 8D95 40FFFFFF lea edx, dword ptr [ebp-C0]
0054902D |. 8B83 04030000 mov eax, dword ptr [ebx+304]
00549033 |. E8 046DF0FF call un.0044FD3C
00549038 |. 8B85 40FFFFFF mov eax, dword ptr [ebp-C0]
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 [eax]
0054904D |. FF56 04 call dword ptr [esi+4]
00549050 |. 8D85 3CFFFFFF lea eax, dword ptr [ebp-C4]
00549056 |. B9 C8915400 mov ecx, un.005491C8 ; ASCII "\sy5ten.sys"
0054905B |. 8B55 FC mov edx, dword ptr [ebp-4]
0054905E |. E8 5DBDEBFF call un.00404DC0
00549063 |. 8B85 3CFFFFFF mov eax, dword ptr [ebp-C4]
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 [5D5358]
00549082 |. 8B00 mov eax, dword ptr [eax]
00549084 |. 8B80 0C050000 mov eax, dword ptr [eax+50C]
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 [ebx+304]
005490A5 |. E8 C26CF0FF call un.0044FD6C
005490AA |. 33D2 xor edx, edx
005490AC |. 8B83 FC020000 mov eax, dword ptr [ebx+2FC]
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:[eax]
00548C7C |. 64:8920 mov dword ptr fs:[eax], 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 [ebp-4] ; |
00548C8E |. E8 9D0DECFF call un.00409A30 将C 转为十进制
00548C93 |. 8B45 FC mov eax, dword ptr [ebp-4]
00548C96 |. 0FB600 movzx eax, byte ptr [eax] 下几步取C中的第一、二位相加,设为temp1
00548C99 |. 8B55 FC mov edx, dword ptr [ebp-4]
00548C9C |. 0FB652 01 movzx edx, byte ptr [edx+1]
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 [ebp-8], dl 存入[ebp-8],设为a1
00548CB0 |. 8B45 FC mov eax, dword ptr [ebp-4]
00548CB3 |. 0FB640 02 movzx eax, byte ptr [eax+2] 下几步取C中的第三、四位相加,设为temp2
00548CB7 |. 8B55 FC mov edx, dword ptr [ebp-4]
00548CBA |. 0FB652 03 movzx edx, byte ptr [edx+3]
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 [ebp-7], dl 存入[ebp-7],设为a2
00548CCE |. 8B45 FC mov eax, dword ptr [ebp-4]
00548CD1 |. 0FB640 04 movzx eax, byte ptr [eax+4] 下几步取C中的第五、六位相加,设为temp3
00548CD5 |. 8B55 FC mov edx, dword ptr [ebp-4]
00548CD8 |. 0FB652 05 movzx edx, byte ptr [edx+5]
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 [ebp-6], dl 存入[ebp-6],设为a3
00548CEC |. 8B45 FC mov eax, dword ptr [ebp-4]
00548CEF |. 0FB640 06 movzx eax, byte ptr [eax+6]下几步取C中的第七、八、九位相加,设为temp4
00548CF3 |. 8B55 FC mov edx, dword ptr [ebp-4]
00548CF6 |. 0FB652 07 movzx edx, byte ptr [edx+7]
00548CFA |. 03C2 add eax, edx
00548CFC |. 8B55 FC mov edx, dword ptr [ebp-4]
00548CFF |. 0FB652 08 movzx edx, byte ptr [edx+8]
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 [ebp-5], dl 存入[ebp-5],设为a4
00548D13 |. 8D45 F4 lea eax, dword ptr [ebp-C]
00548D16 |. 8A55 F8 mov dl, byte ptr [ebp-8]
00548D19 |. E8 7EBFEBFF call un.00404C9C
00548D1E |. 8B45 F4 mov eax, dword ptr [ebp-C]
00548D21 |. 8D55 FC lea edx, dword ptr [ebp-4]
00548D24 |. B9 07000000 mov ecx, 7
00548D29 |. E8 26C3EBFF call un.00405054 将a1放在C串中的第7位,成为新C
00548D2E |. 8D45 F0 lea eax, dword ptr [ebp-10]
00548D31 |. 8A55 FB mov dl, byte ptr [ebp-5]
00548D34 |. E8 63BFEBFF call un.00404C9C
00548D39 |. 8B45 F0 mov eax, dword ptr [ebp-10]
00548D3C |. 8D55 FC lea edx, dword ptr [ebp-4]
00548D3F |. B9 03000000 mov ecx, 3
00548D44 |. E8 0BC3EBFF call un.00405054 将a2放在C串中的第3位,成为新C
00548D49 |. 8D45 EC lea eax, dword ptr [ebp-14]
00548D4C |. 8A55 F9 mov dl, byte ptr [ebp-7]
00548D4F |. E8 48BFEBFF call un.00404C9C
00548D54 |. 8B45 EC mov eax, dword ptr [ebp-14]
00548D57 |. 8D55 FC lea edx, dword ptr [ebp-4]
00548D5A |. B9 05000000 mov ecx, 5
00548D5F |. E8 F0C2EBFF call un.00405054 将a3放在C串中的第5位,成为新C
00548D64 |. 8D45 E8 lea eax, dword ptr [ebp-18]
00548D67 |. 8A55 FA mov dl, byte ptr [ebp-6]
00548D6A |. E8 2DBFEBFF call un.00404C9C
00548D6F |. 8B45 E8 mov eax, dword ptr [ebp-18]
00548D72 |. 8D55 FC lea edx, dword ptr [ebp-4]
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 [ebp-4]
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:[eax], edx
00548D91 |. 68 B38D5400 push un.00548DB3
00548D96 |> 8D45 E8 lea eax, dword ptr [ebp-18]
00548D99 |. BA 04000000 mov edx, 4
00548D9E |. E8 3DBDEBFF call un.00404AE0
00548DA3 |. 8D45 FC lea eax, dword ptr [ebp-4]
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与相连即为注册码
注册机我就不写了,本人的编程也差!呵呵。
------------------------------------------------------------------------ |
评分
-
查看全部评分
|