laccer 发表于 2007-8-19 21:52:32

运行多个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 编辑 ]

小子贼野 发表于 2007-8-19 22:00:54

我的沙发,哈哈哈哈

lxk836 发表于 2007-8-19 22:01:05

第一个来支持 学习一下

小子贼野 发表于 2007-8-19 22:01:52

算法keygen类?咋不放上来?

lxk836 发表于 2007-8-19 22:02:10

小子的动作好快啊!沙发没做到/:L

wer 发表于 2007-8-20 17:17:13

学习了,谢谢/:014

gao2008ss 发表于 2007-12-2 09:59:38

页: [1]
查看完整版本: 运行多个MSN的外挂器算法分析过程(高手飘过)