运行多个MSN的外挂器算法分析过程(高手飘过)
【破文标题】运行多个MSN的外挂器算法分析过程【破文作者】laccer
【作者邮箱】[email protected]
【作者主页】
【破解工具】peid0.94+OD
【破解平台】XPsp2
【软件名称】运行多个MSN的外挂器
【软件大小】224K
【原版下载】http://shareware.skycn.com/soft/7578.htm
【保护方式】注册码
【软件简介】本版本新增加对8.X的支持. MSN多开器本软件绿色软件,无需安装.我们平时是 不是很苦恼一台机器上只能运行一个MSN呢? 这个软件帮你解决烦恼,你就可以象用QQ一样, 想打开几个就打开几个. 使用方法: 直接点击运行。然后每次点击再运行一个MSN,,就可以再打开一个msn了. 更新日期: 2007年08月14日
【破解声明】初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】用PEID0.94查壳,发现无壳,软件件用Microsoft Visual C++ 6.0写的.
运行输入假码,注册错误提示"注册号无效!"
od载入F9运行
查字符串"注册号无效!"找到双击来到:
00402E85 .68 1CF24200 PUSH MSN多开?0042F21C ;注册号无效
向上找到如下:
00402DA0 .6A FF PUSH -1 : 下断
00402DA2 .68 08374200 PUSH MSN多开?00423708 ;SE 处理程序安装
00402DA7 .64:A1 0000000>MOV EAX, DWORD PTR FS:
00402DAD .50 PUSH EAX
00402DAE .64:8925 00000>MOV DWORD PTR FS:, ESP
00402DB5 .83EC 08 SUB ESP, 8
00402DB8 .56 PUSH ESI
00402DB9 .8BF1 MOV ESI, ECX
00402DBB .6A 01 PUSH 1
00402DBD .E8 D6720100 CALL MSN多开?0041A098
00402DC2 .A1 CCF54200 MOV EAX, DWORD PTR DS: ;假码
00402DC7 .894424 04 MOV DWORD PTR SS:, EAX
00402DCB .8D8E 1C010000 LEA ECX, DWORD PTR DS:
00402DD1 .C74424 14 000>MOV DWORD PTR SS:, 0
00402DD9 .51 PUSH ECX
00402DDA .8D4C24 08 LEA ECX, DWORD PTR SS:
00402DDE .E8 74870100 CALL MSN多开?0041B557
00402DE3 .51 PUSH ECX
00402DE4 .8D5424 08 LEA EDX, DWORD PTR SS: ;假码地址传到EDX
00402DE8 .8BCC MOV ECX, ESP
00402DEA .896424 0C MOV DWORD PTR SS:, ESP
00402DEE .52 PUSH EDX ;压入假码地址
00402DEF .E8 E3830100 CALL MSN多开?0041B1D7 ;读取假码
00402DF4 .E8 77FEFFFF CALL MSN多开?00402C70 ;算法CALL
00402DF9 .83C4 04 ADD ESP, 4
00402DFC .85C0 TEST EAX, EAX ;EAX值是否为零
00402DFE .74 1C JE SHORT MSN多开?00402E1C ;关键跳(EAX值为零OVER)
00402E00 .6A 00 PUSH 0
00402E02 .68 60F24200 PUSH MSN多开?0042F260 ;NGNSSS
00402E07 .68 7CF24200 PUSH MSN多开?0042F27C ;注册成功
00402E0C .8BCE MOV ECX, ESI
00402E0E .E8 296B0100 CALL MSN多开?0041993C
00402E13 .8BCE MOV ECX, ESI
00402E15 .E8 609A0100 CALL MSN多开?0041C87A
00402E1A .EB 75 JMP SHORT MSN多开?00402E91
00402E1C >6A 08 PUSH 8
00402E1E .68 68F24200 PUSH MSN多开?0042F268 ;1163659294813585
00402E23 .6A 08 PUSH 8
00402E25 .8D4C24 10 LEA ECX, DWORD PTR SS:
00402E29 .E8 0B8A0100 CALL MSN多开?0041B839
00402E2E .50 PUSH EAX
00402E2F .E8 0C810000 CALL MSN多开?0040AF40
00402E34 .83C4 0C ADD ESP, 0C
00402E37 .85C0 TEST EAX, EAX
00402E39 .75 12 JNZ SHORT MSN多开?00402E4D
00402E3B .50 PUSH EAX
00402E3C .68 60F24200 PUSH MSN多开?0042F260 ;NGNSSS
00402E41 .68 3CF24200 PUSH MSN多开?0042F23C ;这是个盗版的注册号,请注册正式版本
00402E46 .8BCE MOV ECX, ESI
00402E48 .E8 EF6A0100 CALL MSN多开?0041993C
00402E4D >6A 08 PUSH 8
00402E4F .68 28F24200 PUSH MSN多开?0042F228 ;0386848021608060
00402E54 .6A 08 PUSH 8
00402E56 .8D4C24 10 LEA ECX, DWORD PTR SS:
00402E5A .E8 DA890100 CALL MSN多开?0041B839
00402E5F .50 PUSH EAX
00402E60 .E8 DB800000 CALL MSN多开?0040AF40
00402E65 .83C4 0C ADD ESP, 0C
00402E68 .85C0 TEST EAX, EAX
00402E6A .75 12 JNZ SHORT MSN多开?00402E7E
00402E6C .50 PUSH EAX
00402E6D .68 60F24200 PUSH MSN多开?0042F260 ;NGNSSS
00402E72 .68 3CF24200 PUSH MSN多开?0042F23C ;这是个盗版的注册号,请注册正式版本
00402E77 .8BCE MOV ECX, ESI
00402E79 .E8 BE6A0100 CALL MSN多开?0041993C
00402E7E >6A 00 PUSH 0
00402E80 .68 60F24200 PUSH MSN多开?0042F260 ;NGNSSS
00402E85 .68 1CF24200 PUSH MSN多开?0042F21C ;注册号无效
00402E8A .8BCE MOV ECX, ESI
00402E8C .E8 AB6A0100 CALL MSN多开?0041993C
00402E91 >8D4C24 04 LEA ECX, DWORD PTR SS:
00402E95 .C74424 14 FFF>MOV DWORD PTR SS:, -1
00402E9D .E8 C0850100 CALL MSN多开?0041B462
00402EA2 .8B4C24 0C MOV ECX, DWORD PTR SS:
00402EA6 .5E POP ESI
00402EA7 .64:890D 00000>MOV DWORD PTR FS:, ECX
00402EAE .83C4 14 ADD ESP, 14
00402EB1 .C3 RETN
跟进CALL MSN多开?00402C70
如下:
00402C70/$6A FF PUSH -1
00402C72|.68 E8364200 PUSH MSN多开?004236E8 ;SE 处理程序安装
00402C77|.64:A1 0000000>MOV EAX, DWORD PTR FS:
00402C7D|.50 PUSH EAX
00402C7E|.64:8925 00000>MOV DWORD PTR FS:, ESP
00402C85|.83EC 18 SUB ESP, 18
00402C88|.53 PUSH EBX
00402C89|.8B4C24 2C MOV ECX, DWORD PTR SS: ;假码
00402C8D|.33C0 XOR EAX, EAX
00402C8F|.894424 05 MOV DWORD PTR SS:, EAX
00402C93|.33DB XOR EBX, EBX
00402C95|.66:894424 09MOV WORD PTR SS:, AX
00402C9A|.895C24 24 MOV DWORD PTR SS:, EBX
00402C9E|.884424 0B MOV BYTE PTR SS:, AL
00402CA2|.8B41 F8 MOV EAX, DWORD PTR DS: ;假码位数
00402CA5|.83F8 10 CMP EAX, 10 ;是否16位
00402CA8|.885C24 04 MOV BYTE PTR SS:, BL
00402CAC|.0F8C C0000000 JL MSN多开?00402D72 ;假码小于16位就OVER
00402CB2|.56 PUSH ESI
00402CB3|.68 04010000 PUSH 104
00402CB8|.8D4C24 34 LEA ECX, DWORD PTR SS:
00402CBC|.E8 788B0100 CALL MSN多开?0041B839
00402CC1|.8B10 MOV EDX, DWORD PTR DS: ;假码第1至第4位
00402CC3|.33F6 XOR ESI, ESI
00402CC5|.895424 10 MOV DWORD PTR SS:, EDX
00402CC9|.8B48 04 MOV ECX, DWORD PTR DS: ;假码第5至第8位
00402CCC|.894C24 14 MOV DWORD PTR SS:, ECX
00402CD0|.8B50 08 MOV EDX, DWORD PTR DS: ;假码第9至第12位
00402CD3|.895424 18 MOV DWORD PTR SS:, EDX
00402CD7|.8B40 0C MOV EAX, DWORD PTR DS: ;假码第13至第16位
00402CDA|.894424 1C MOV DWORD PTR SS:, EAX
00402CDE|>8A4C34 10 /MOV CL, BYTE PTR SS: ;假码ASCII转换数字
00402CE2|.51 |PUSH ECX
00402CE3|.E8 68FFFFFF |CALL MSN多开?00402C50
00402CE8|.83C4 04 |ADD ESP, 4
00402CEB|.884434 10 |MOV BYTE PTR SS:, AL ;假码转换后的数字放入
00402CEF|.46 |INC ESI ;每取一次假码ESI值加1
00402CF0|.83FE 10 |CMP ESI, 10 ;是否取够16位
00402CF3|.^ 7C E9 \JL SHORT MSN多开?00402CDE ;不够继续
00402CF5|.33C0 XOR EAX, EAX
00402CF7|.8D4C24 10 LEA ECX, DWORD PTR SS: ;转换后的数字的地址放ECX
00402CFB|.5E POP ESI
00402CFC|>8A51 01 /MOV DL, BYTE PTR DS: ;取假码转换数字后的偶数位
00402CFF|.8A19 |MOV BL, BYTE PTR DS: ;取假码转换数字后的奇数位
00402D01|.C0E2 04 |SHL DL, 4 ;偶数位的数字左移4位(假如DL=02,左移4位后是20)
00402D04|.02D3 |ADD DL, BL ;偶数位左移4位的数字加奇数位的数字=DL
00402D06|.83C1 02 |ADD ECX, 2 ;地址加2(为取假码数字作准备)
00402D09|.885404 04 |MOV BYTE PTR SS:, DL ;[偶数位左移4位的数字]加[奇数位的数字]结果放
00402D0D|.40 |INC EAX
00402D0E|.83F8 08 |CMP EAX, 8
00402D11|.^ 7C E9 \JL SHORT MSN多开?00402CFC
00402D13|.8A4424 07 MOV AL, BYTE PTR SS: ;假码转换数字后的第7位第8位=AL
00402D17|.8A5C24 04 MOV BL, BYTE PTR SS: ;假码转换数字后的第1位第2位=BL
00402D1B|.8A4C24 0B MOV CL, BYTE PTR SS: ;假码转换数字后的第15位第16位=CL
00402D1F|.8A5424 05 MOV DL, BYTE PTR SS: ;假码转换数字后的第3位第4位=DL
00402D23|.32C3 XOR AL, BL ;AL XOR BL=AL
00402D25|.8A5C24 06 MOV BL, BYTE PTR SS: ;假码转换数字后的第5位第6位
00402D29|.32CA XOR CL, DL ;CL XOR DL=CL
00402D2B|.8A5424 09 MOV DL, BYTE PTR SS: ;假码转换数字后的第11位第12位
00402D2F|.32D3 XOR DL, BL ;DL XOR BL = DL
00402D31|.8A5C24 08 MOV BL, BYTE PTR SS: ;假码转换数字后的第9位第10位
00402D35|.325C24 0A XOR BL, BYTE PTR SS: ;BL XOR =BL =第13位第14位
00402D39|.3C 38 CMP AL, 38 ;AL与38比较
00402D3B|.75 35 JNZ SHORT MSN多开?00402D72
00402D3D|.80F9 78 CMP CL, 78 ;CL与78比较
00402D40|.75 30 JNZ SHORT MSN多开?00402D72
00402D42|.80FA 4E CMP DL, 4E ;DL与4E比较
00402D45|.75 2B JNZ SHORT MSN多开?00402D72
00402D47|.80FB 1A CMP BL, 1A ;BL与1A比较
00402D4A|.75 26 JNZ SHORT MSN多开?00402D72 ;以上相等注册成功
00402D4C|.8D4C24 2C LEA ECX, DWORD PTR SS:
00402D50|.C74424 24 FFF>MOV DWORD PTR SS:, -1
00402D58|.E8 05870100 CALL MSN多开?0041B462
00402D5D|.B8 01000000 MOV EAX, 1
00402D62|.5B POP EBX
00402D63|.8B4C24 18 MOV ECX, DWORD PTR SS:
00402D67|.64:890D 00000>MOV DWORD PTR FS:, ECX
00402D6E|.83C4 24 ADD ESP, 24
00402D71|.C3 RETN
------------------------------------------------------------------------
【破解总结】注册码要符合以下条件:
假码第1位第2位 XOR 假码第7位第8位=38
假码第3位第4位 XOR 假码第15位第16位=78
假码第5位第6位 XOR 假码第11位第12位=4E
假码第9位第10位XOR 假码第13位第14位=1E
有效的一组注册码:1212129112F6B395
------------------------------------------------------------------------
【版权声明】【版权声明】转载请注明出处,请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 laccer 于 2007-8-19 23:52 编辑 ] 我的沙发,哈哈哈哈 第一个来支持 学习一下 算法keygen类?咋不放上来? 小子的动作好快啊!沙发没做到/:L 学习了,谢谢/:014
页:
[1]