软件名称: 超级Ping 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 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 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 |
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>