超级Ping V2.15 破解分析
软件名称:
超级Ping V2.15
软件简介:
软件介绍:
超级Ping2.15(PingPlus V2.15)是一个可以实现对多个主机网络状态的实时监测,并有自动记录分析结果、断网自动告警等功能的网络监测软件。监测的结果可以记录在以IP地址为文件名的文本文件中,也可以记录在Acess数据库中,由用户自由选择。PingPlus的使用非常简便、功能强大且稳定,可以极大地方便网管人员的工作!PingPlus
V2.0根据网络公司网管的实际要求对1.0作出重大修改,更符合网络监测的要求,目前仍在网络公司实际使用中进行测试,不断完善。2.15根据网络公司的实际应用需要,
增加了定时监测的网络监测模式,参数设置更加灵活,并添加了端口扫描、数据库管理功能。 V2.15目前仍在不断修改完善当中,正在添加更多的功能,满足不同的需要。欢迎用户对该软件提出自己的修改意见,我们会根据情况对软件进行修改...
下载地址:
http://joysea.126.com/
------------------------------------------------------------
破解作者:
冷枫[OCN]
破解工具:
OLLYDBG,W32DASM
破解目的:
研究算法
------------------------------------------------------------
[破解过程]
详细过程:
[[我的第一篇算法,写的不好的地方请大家指教~~~~]]
0040708B . 6A 01
PUSH 1
0040708D . 8BCD
MOV ECX,EBP
0040708F . C74424 7C 0000>MOV DWORD PTR
SS:[ESP+7C],0
00407097 . E8 E80D0000 CALL
<JMP.&MFC42.#6334>
0040709C . 8BBD E4000000 MOV
EDI,DWORD PTR SS:[EBP+E4] ;
// 取用户冷枫(C0E4B7E3)放到EDI
004070A2 . 83C9
FF OR ECX,FFFFFFFF
;
// 将ECX变为FFFFFFFF
004070A5 . 33C0
XOR EAX,EAX
;
//EAX清零X,
004070A7 .
8D5424 38 LEA EDX,DWORD PTR SS:[ESP+38]
004070AB .
F2:AE REPNE SCAS BYTE PTR ES:[EDI]
004070AD
. F7D1 NOT ECX
;
004070AF . 2BF9
SUB EDI,ECX
004070B1 . 8BC1
MOV EAX,ECX
;
004070B3 .
8BF7 MOV ESI,EDI
004070B5 . 8BFA
MOV EDI,EDX
004070B7 . C1E9 02
SHR ECX,2
;
004070BA . F3:A5 REP MOVS
DWORD PTR ES:[EDI],DWORD PTR DS>
004070BC . 8BC8
MOV ECX,EAX
004070BE . 33C0
XOR EAX,EAX
004070C0 . 83E1 03
AND ECX,3
004070C3 . F3:A4 REP
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004070C5 . 8D7C24 38
LEA EDI,DWORD PTR SS:[ESP+38]
004070C9 . 83C9 FF
OR ECX,FFFFFFFF
004070CC . F2:AE
REPNE SCAS BYTE PTR ES:[EDI]
004070CE . F7D1
NOT ECX
004070D0 . 49
DEC ECX
004070D1 . 83F9 13
CMP ECX,13
;
//看用户名是不是大于19
004070D4 . 7D 0F
JGE SHORT PINGPLUS.004070E5
;
///大等于则跳,不跳则通过位数运算的值来补充用户的位数一直到满足19位
004070D6 > 8AD1
MOV DL,CL
;
// 将位数放入EDX
004070D8 . 80C2 41
ADD DL,41
;
//位数加41=41
004070DB . 88540C 38 MOV BYTE PTR
SS:[ESP+ECX+38],DL ;
//用来补充的用户名的 ASCII
第5位用户名数:4+41=45
(E)
第6位用户名数:5+41=46 (F)。。。。一直到19位
EFGHIJKLMNOPQRS
004070DF . 41
INC ECX
//将用户位数加1,看是不是大于19
004070E0 . 83F9 13
CMP ECX,13
//直到满足19
004070E3 .^7C F1 JL SHORT
PINGPLUS.004070D6
004070E5 > 8B4C24 47 MOV
ECX,DWORD PTR SS:[ESP+47] ;
//取第16-19位=ecx
004070E9 . 8B4424 43
MOV EAX,DWORD PTR SS:[ESP+43]
;
// 取12-15位=EAX
004070ED .
8B5424 3A MOV EDX,DWORD PTR SS:[ESP+3A]
;
//
取3-6位=EDX
004070F1 . 894C24 54 MOV DWORD PTR
SS:[ESP+54],ECX ;
// 将16-19位 PQRS 放入[ESP+54}=[内存地址] 0064DF4C
为另一组数的5-8位
004070F5 . 66:8B4C24 42 MOV CX,WORD PTR SS:[ESP+42]
;
// 取11-12位到ECX
004070FA . 894424 50 MOV
DWORD PTR SS:[ESP+50],EAX ;
取
// 12-15位 LMNO 放入[ESP+50}=[内存地址] 0064DF48
为另一组数的1-4位
004070FE . 8B4424 3E MOV
EAX,DWORD PTR SS:[ESP+3E] ;
// 取7-10位到EAX
00407102 . 895424 58
MOV DWORD PTR SS:[ESP+58],EDX ;
// 取3-6位 B7E3EFG
放入[ESP+58}=[内存地址] 0064DF50 为另一组数的9-12位
00407106 . 8A5424
44 MOV DL,BYTE PTR SS:[ESP+44]
;
0040710A . 66:894C24 60 MOV WORD
PTR SS:[ESP+60],CX ;
// 取11-12位 KL 放入[ESP+60}=[内存地址]
0064DF58 为另一组数的17-18位
0040710F . C64424 4B 00 MOV BYTE
PTR SS:[ESP+4B],0
00407114 . 894424 5C MOV DWORD
PTR SS:[ESP+5C],EAX ;
// 取7-11位 GHIJ 放入[ESP+5c}=[内存地址] 0064DF54
为另一组数的13-16位
00407118 . 885424 62
MOV BYTE PTR SS:[ESP+62],DL
;
// 取13位 M 放入[ESP+62}=[内存地址]
0064df5a 为另一组数的13-16位
0040711C . C64424 63 00
MOV BYTE PTR SS:[ESP+63],0
// 取0, 放入[ESP+5c}=[内存地址]
0064df5B 00代表取完
整里上面的内存数据0064DF48-----0064df5B 为
L(4C)M(4D)N(4E)O(4F)P(50)Q(51)R(52)S(53)枫(B7
E3)E(45)F(46)G(47)H(48)I(49)J(4A)K(4B)L(4C)M(4D)19位ASCII码
00407121 .
33C9 XOR ECX,ECX
;
// 将ECX 清0
00407123 > 0FBE540C 50
MOVSX EDX,BYTE PTR SS:[ESP+ECX+50]
//
一个一个取上面19位ASCII码运算另一组数
1 ------
L(4C)----》EDX
2-----M(4D)----》EDX
,3-N(4E),4-O(4F),5-P(50),6-Q(51),7-R(52),8-S(53)9,10--枫(B7
E3),11-E(45),12-F(46)。。。。19-M(4D)
00407128 . BE 1A000000
MOV ESI,1A 将1A 放入ESI
0040712D . 8D0452
LEA EAX,DWORD PTR DS:[EDX+EDX*2]
1-----EDX(4C)+L(4C)*2=E4 ------》EAX
2-----EDX(4D)+L(4D)*2=E7 ------》EAX
,3-N(4E)+N(4E)*2=E7,。。。。。。一直到19位
00407130 . C1E0 03
SHL EAX,3
1-----EAX(E4) SHL 3
=720
2-----EAX(E7) SHL 3 =738
00407133 . 2BC2
SUB EAX,EDX
1----EAX(720)-EDX(4C)=6D4---->EAX
2----EAX(738)-EDX(4D)=6EB---->EAX。。。。。。。。。一直到19位
00407135 .
83C0 1B ADD EAX,1B
1----EAX(6D4)+1B=6EF----->EAX
2---EAX(6EB)+1B=706----->EAX。。。。。。。。。一直到19位
00407138 . 99
CDQ EDX 清
0
00407139 . F7FE IDIV ESI
1-------EAX(6EF) IDIV ESI(1A)得 44放入EAX 和 7放入EDX
2-------EAX(706) IDIV ESI(1A)得 45放入EAX 和 4放入EDX
。。。。。。。。。一直到19位
0040713B . 80C2 41 ADD
DL,41
1-------EDX (7)+41=48
2-------EDX
(4)+41=45。。。。。。。。。一直到19位
0040713E . 88540C 38 MOV
BYTE PTR SS:[ESP+ECX+38],DL
1------EDX(48)放入内存64DF30
2------EDX(45)放入内存64DF31。。。。。。。。。一直到19位
00407142 . 41
INC ECX
// ECX 加1
表示注册码运算的位数
00407143 . 83F9 13 CMP
ECX,13 比较是不是有19位了
00407146 .^7C DB
JL SHORT PINGPLUS.00407123
// 没有,继续 运算完成19位得到:HEBYVSPM31CZWTQNKHE
00407148 . BF
1A000000 MOV EDI,1A
//
将1A----》EDI
0040714D . 8D4424 38 LEA EAX,DWORD PTR
SS:[ESP+38]
00407151 . 33F6
XOR ESI,ESI
00407153 . 2BF8 SUB
EDI,EAX
//EDI(1A)-EAX(64DF30)=FF9B20EA---》EDI
00407155 > 8D4C34 38
LEA ECX,DWORD PTR SS:[ESP+ESI+38]
//一个一个取上面运算得到的19位数进行运算,ESP+ESI+38为存放注册码的内存地址---》ECX
1----64DF30----》ECX。。。。。。。一直取到19位
00407159 . B8 BC070000
MOV EAX,7BC
//将7BC放入EAX
0040715E . 99
CDQ EDX 清0
0040715F . 8D1C0F LEA
EBX,DWORD PTR DS:[EDI+ECX]
1--------将[EDI(FF9B20EA)+ECX(64DF30)]=1A---》EBX 。。。一直到19位
00407162 .
F7FB IDIV EBX
1---------用EAX(7BC) IDIV EBX(1A)得到 4C放入 EAX 和4放入 EDX
。。。一直到19位
00407164 . 8BD8 MOV
EBX,EAX
1--------将EAX 4C---》EBX
。。。一直到19位
00407166 . 0FBE01 MOVSX EAX,BYTE
PTR DS:[ECX]
1-----将ECX 64DF30内存值(H -48)------》EAX
。。。一直到19位
00407169 . 99
CDQ
//EDX
清0
0040716A . 2BC2 SUB EAX,EDX
//EAX(48) -EDX(0) =48
。。。一直到19位
0040716C . D1F8 SAR
EAX,1
//EAX(48) SAR 1=24
。。。一直到19位
0040716E . 02D8 ADD BL,AL
//EAX(48)+EBX(4C)=70----》EBX
。。。一直到19位
00407170 . 80FB 41 CMP
BL,41
//比较是不是大于A 的 ASCii
(41)也就是比较是不是大写字母。。。一直到19位
00407173 . 8819
MOV BYTE PTR DS:[ECX],BL
将BL(70)--》ECX。。。一直到19位
00407175 . 7D 10
JGE SHORT PINGPLUS.00407187
//大于在跳,不打则到下面在次运算
00407177 . 0FBEC3
MOVSX EAX,BL
0040717A . 99
CDQ
0040717B . BB 1A000000 MOV
EBX,1A
00407180 . F7FB IDIV
EBX
00407182 . 80C2 41 ADD
DL,41
00407185 . 8811 MOV BYTE PTR
DS:[ECX],DL
00407187 > 8A01 MOV
AL,BYTE PTR DS:[ECX]
00407189 . 3C 5A
CMP AL,5A
//比较是不是小于Z,和上面的A,一起用来比较是不是26个大写字母中的
0040718B . 7E 10
JLE SHORT PINGPLUS.0040719D
小于和等于跳
0040718D . 0FBEC0 MOVSX EAX,AL
将AL(70)---》EAX
。。。一直到19位
00407190 . 99
CDQ
00407191 . BB 1A000000 MOV EBX,1A
//1A----》EBX
00407196 . F7FB
IDIV EBX
// 将70 IDIV 1A 得 4放入EAX 和 8放入 EDX
。。。一直到19位
00407198 . 80C2 41 ADD DL,41
//DL(8)+41=49
第一位真注册码。。。一直到19位
0040719B . 8811
MOV BYTE PTR DS:[ECX],DL
0040719D > 46
INC ESI
// ESI 加1 ,
0040719E . 83FE 13
CMP ESI,13
// 看是不是有19位了 最后得注册码:IDZIFAXUSPXUROYWTRO
004071A1 .^7C B2 JL SHORT
PINGPLUS.00407155
//有则不跳,
004071A3
. 8D4C24 38 LEA ECX,DWORD PTR SS:[ESP+38]
004071A7 . 8D5424 1C LEA EDX,DWORD PTR
SS:[ESP+1C]
004071AB . 51
PUSH ECX
004071AC . 68 F8D14000 PUSH PINGPLUS.0040D1F8
; ASCII
"%s"
004071B1 . 52 PUSH
EDX
004071B2 . E8 EB0C0000 CALL
<JMP.&MFC42.#2818>
004071B7 . 8B85 E8000000 MOV
EAX,DWORD PTR SS:[EBP+E8]
004071BD . 50
PUSH EAX
;
EAX---》你输入的注册码
004071BE . 8B4424 2C
MOV EAX,DWORD PTR SS:[ESP+2C] ;
|
004071C2 . 50 PUSH EAX
;
EAX---》真注册码
004071C3 . FF15 A8A34000 CALL DWORD PTR
DS:[<&MSVCRT._mbscmp>] 比较
004071C9 . 83C4 14
ADD ESP,14
004071CC . 85C0
TEST EAX,EAX
004071CE . 6A 00
PUSH 0
完工,写的不对的地方还请各位看观改正~~~~~~~~~~
破解小结:
用户:冷枫
注册码:IDZIFAXUSPXUROYWTRO
------------------------------------------------------------
冷枫[OCN]