• 标 题:超级Ping V2.15
  • 作 者:冷枫
  • 时 间:2003/06/02 10:57am
  • 链 接:http://bbs.pediy.com

超级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]