IT-PR0服务器企业版超强加密的破解
【软件名称】IT-PR0服务器企业版2.82.0826【保护方式】序列号本地验证(BASE64,CRC32,DES,MD5)+网络验证/o&{B'`y/@ X(bq5W
【使用工具】PEID0.94汉化版,flyODBG。J3Scx V6g5P|4a
【功能简介】IT-PRO 是一个对局域网上计算机进行有效监管的工具。它的主要功能包括: ,O(b*ka8sD I
实时监视和记录局域网上各个计算机上的屏幕快照;网络执法官有的功能这个软件都有其他的功能还很多,就不多说了。 H Ifz*J?
【破解过程】
首先给大家介绍一下,这个安装需要在安装服务器端和客户端,加密主要在服务器端,服务器端的软件又分为了服务程序,和控制台程序,加密只加了服务程序。安装软件后,有15天的试用期,时间一到就提示过期,并且不能启动服务,我们破解的关键就在于让这个服务能够启动。读完软件的安装使用说明书,发现该软件的注册有点特别,先要升级序列号,然后才能进行注册。
开始了啊,不过我还得讲讲破解这类软件的思路,(你废话真多,一只鞋子飞过来了)破解这类软件,首先得把本地验证搞定,然后再破解网络验证。 k,wpp`0G
8`&v~ O t0Fb
本地验证的破解
PEID0.94一查无壳,用插件进行算法扫描看到本程序使用了:BASE64,CRC32,DES,MD5算法。这么多太变态了 (不过不用怕,往下看你就会明白的)。
在进行注册前先得升级序列号:+N8u uw H
填入如下序列号(每台电脑都可以用,当然你也可以用,这是我从软件的帮助偷看到的):200A0A03-81EF20F6310DAC87,点确定。 k;N;n!} y|Xd(B9h1P
s1] _tE*|0X
*v#e)dU'|K,n
然后呢,发现注册按钮已经可用了。#r)Dk,l;Bt*td
那我们就点击注册吧,并填入如下信息:0yYC2Qc\(ve#j'I
用户名称:ihhvqu[BCG][DFCG][OCN][PYG]][CZG]
邮件地址:[email]ihhvqu@tom.com[/email]RH5?,U.ibRB)VL
电话:00000000#W.X8Wq/\Lg"r.^
注册码:11111111111111113G k(g c4Ei r
点确定,提示:注册码错误。嘿嘿,那就用OD载入查找错误提示很容易来到:
00452F2C 50 push eax*YB*Ky2z7Q)C
00452F2D 51 push ecx
00452F2E 52 push edx+CQp7F:o |8T
00452F2F 8BCB mov ecx,ebx
00452F31 E8 0AECFFFF call OServer.00451B40 ;关键CALL,F7追入
00452F36 85C0 test eax,eaxv?U rR3KN,a
00452F38 74 21 je short OServer.00452F5B ; 关键跳不跳over
00452F3A 6A 00 push 0]|U_qJ!bK3}]#]
00452F3C 6A 10 push 109idp1fO@*V'@m
00452F3E 68 70894700 push OServer.00478970 ; 注册码错误
00452F43 E8 40720100 call <jmp.&MFC42.#1200>.zt SpV I0s
OD重新载入,从00452F31一行追入后来到:,lS-Je%ti-Q~#I6W
00451B40 64:A1 00000000 mov eax,dword ptr fs:[0] ;当光条停在这里时在EAX中可以看到我们的假注册码,9a:S+LE;EqCp
00451B46 6A FF push -1!lA&jQ%P6J
00451B48 68 882A4700 push OServer.00472A88%C xx)ptg+Az1B%x}Y
00451B4D 50 push eax
……………………………………………………………..……..$XV0[S0G
…………………省略一段代码…………………………………
……………………………………………………………………
00451BB5 5F pop edi@Gt_LKB
00451BB6 5E pop esi
00451BB7 5B pop ebxOD9fh!nt
00451BB8 83C4 0C add esp,0C O%nK.X+?@,iL
00451BBB C2 0C00 retn 0C
00451BBE 8B4C24 24 mov ecx,dword ptr ss:[esp+24] 估计上面几个CALL就是算法CALL了,这里就不分析了,本文主要是为了讲思路。
00451BC2 8B5424 20 mov edx,dword ptr ss:[esp+20] ; 到这一行又看到了我的假注册码.K3P#eE0QA
00451BC6 51 push ecx ;当光条停在这一行时,在EDX中可以看到真注册码(嘿嘿虽然用了很多加密算法又怎么样,最终还是明码),我这里看到的是:89CE436CAF0AF582,看到这里我们就可以做个内存注册机了(内存注册机的制作就省略了本文主要是讲思路),本地验证就这样被搞定。
00451BC7 52 push edx
00451BC8 FF15 B8674700 call dword ptr ds:[<&MSVCRT._str>; MSVCRT._stricmp.|y$xt#b?
00451BCE 83C4 08 add esp,8
'`1|+Cbis+X;[Sz
破解网络验证
现在我们关闭OD,重新注册填好刚才的注册码,运行OServer.exe,顺利启动,不过好景不长,才过几分钟就出现如下提示信息。Gxr*XM;TJy%rD
1M0C3D9A |
没办法还得请出OD,搜索字符串:“产品注册信息不正确!”很快就找到上面的提示信息。双击来到如下代码处:YX$Iu0M
00459DB0 64:A1 00000000 mov eax,dword ptr fs:[0]
00459DB6 6A FF push -1 g2|wm/S\.oe,|
00459DB8 68 B43B4700 push OServer.00473BB4
…………………………………………………………………….
……………………省略一段代码……………………………….
…………………………………………………………………....
00459DE5 FF15 90684700 call dword ptr ds:[<&USER32.IsIc>; USER32.IsIconic
00459DEB 85C0 test eax,eax|\t+Wsl Q
00459DED /74 09 je short OServer.00459DF8
00459DEF 6A 09 push 9
00459DF1 8BCE mov ecx,esiM!\Nhz;en{ N s
00459DF3 E8 C6060100 call <jmp.&MFC42.#6215> f"~-t&x?9J
00459DF8 8B57 20 mov edx,dword ptr ds:[edi+20]
00459DFB 52 push edx
00459DFC FF15 94684700 call dword ptr ds:[<&USER32.SetF>; USER32.SetForegroundWindow
00459E02 8BCE mov ecx,esiS9{L'\Z
00459E04 E8 F7CDFFFF call OServer.00456C00 6h rfPVRG-K0z
00459E09 68 A0044900 push OServer.004904A0 ; ASCII "<pid>-<rid>"
00459E0E 8D4C24 10 lea ecx,dword ptr ss:[esp+10]
00459E12 E8 47000100 call <jmp.&MFC42.#537>8?4c0HdjM6T
00459E17 8D4C24 08 lea ecx,dword ptr ss:[esp+8]
00459E1B C78424 90000000 000000>mov dword ptr ss:[esp+90],0
00459E26 E8 359AFFFF call OServer.00453860
00459E2B 68 1F000200 push 2001Fi)O/D8T9i'@,A!b
00459E30 68 D8A94800 push OServer.0048A9D8 ; ASCII "software\TEC\Ocular.1\Server"
00459E35 68 02000080 push 80000002}4hE~Vx:}"e
00459E3A 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
00459E3E C68424 9C000000 01 mov byte ptr ss:[esp+9C],1
00459E46 E8 459AFFFF call OServer.00453890!~6@/Gg+K0vF2o
00459E4B 85C0 test eax,eax
00459E4D 75 18 jnz short OServer.00459E67 [ g9gwKf
00459E4F 68 1F000200 push 2001F
00459E54 68 D8A94800 push OServer.0048A9D8 ; ASCII "software\TEC\Ocular.1\Server".BT^ oJh
00459E59 68 02000080 push 80000002&~r{?6Uj [;I"of
00459E5E 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
00459E62 E8 699AFFFF call OServer.004538D0
00459E67 8B4424 0C mov eax,dword ptr ss:[esp+C]:sw0_^#v%f&]
00459E6B 8D4C24 08 lea ecx,dword ptr ss:[esp+8]
00459E6F 50 push eax
00459E70 68 6C014900 push OServer.0049016C ; ASCII "RegisterId"0ex9UqUSE5F*X
00459E75 E8 F69EFFFF call OServer.00453D70
00459E7A 6A 00 push 0
00459E7C 68 44100000 push 1044
00459E81 68 9C924700 push OServer.0047929C ; 产品注册信息不正确!
上面的一大段代码只有那么三四个CALL和跳转,但是无论怎么跳,都会把OServer.exe服务关闭(在这里我发现程序是先关闭OServer.exe服务然后再弹出那个提示信息的,所以不能让他关闭OServer.exe服务),所以最后确定关键点不是这里。
我们在:00459DB0一行下断(也就是上面那一大段代码的最上面一行。)然后OD重新载入,输入正确的注册码,OServer.exe正确启动,几分钟后(因为大概是几分钟才后才进行的网络验证)被断下::x}/Ut{A O(Y
00459DB0 64:A1 00000000 mov eax,dword ptr fs:[0] ;被断在这里B@-]%{ G
00459DB6 6A FF push -1,y:O!Pq}+r
00459DB8 68 B43B4700 push OServer.00473BB4,Iv&r4[k1B;@1A vD
00459DBD 50 push eax@T&l)V)mvQg
00459DBE 64:8925 00000000 mov dword ptr fs:[0],esp
00459DC5 81EC 80000000 sub esp,80
00459DCB 56 push esi
在00459DB0一行被断下后,看堆栈:llu]O Trp1xP
0012FC04 00456A2D 返回到 OServer.00456A2D 来自 OServer.00459DB0
0012FC08 00F28570
0012FC0C 00000000
0012FC10 004569E0 OServer.004569E0 HILO[5Yy U~e
看到了吗,这就表示这段代码是从00456A2D过来的。那我们就Ctrl+G到00456A2D去看看吧,很快我们来到这里:oD7C/F [O,yjv8q K
004569E0 81EC C0000000 sub esp,0C0:}1U^v"yB*a+O
004569E6 53 push ebx
004569E7 56 push esi