标题:一个游戏外挂的破解过程

-------------------------------------------------------------------------------------------------------------------------------

时间:2006/8/21 4:25:42

-------------------------------------------------------------------------------------------------------------------------------

内容:

一个游戏外挂的破解过程

【前    言】:网络游戏《凯旋》辅助工具的破解过程!

【软件名称】:绝影凯旋vip_7.6白银版

【下载页面】:http://www.pker.cc/ (经常访问不了) http://bbs.pker.cc/ 

【破解版下载地址】:http://www.weiersi.net/pk.rar    或http://www.00768.com/Yock_Web/Yock_Download/PKKXvip_76_Yock(1124).rar

【软件大小】:...

【应用平台】:WIN9X/WINNT/WIN2K/WINXP

【软件简介】:...

【软件限制】:ACP的壳+网络用户名验证

【文章作者】:辉仔Yock

【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机或是补丁文件任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件!(在这里最此软件的作者以万二分的歉意鞠躬...)

【破解工具】:OD

—————————————————————————————————
【过    程】:

[REPLYVIEW]
之前的几个版本的加密算法很简单.到了现在这个7.6版的加密强了!

首先用了ACP壳的sdk加密.然后算法的过程也复杂了!

书写的过程只是简单的说说破解的思路.给读者一个关于网络验证的一个参考!

脱壳的过程我就不写了!

ACP的壳+sdk 分析的过程有点晕.但是进入主程序之后耐心分析就可以找到核心关键!

壳没有吃OEP的字节.
OEP=0042DD9F
0042DD9F    55              PUSH    EBP
0042DDA0    8BEC            MOV     EBP, ESP
0042DDA2    6A FF           PUSH    -1
0042DDA4    68 68144300     PUSH    431468
0042DDA9    68 60DD4200     PUSH    42DD60


下面就是关键的开始:

0040A347    E8 3C350200     CALL    0042D888
0040A34C    60              PUSHAD
0040A34D    60              PUSHAD
0040A34E    E8 00000000     CALL    0040A353
0040A353    5E              POP     ESI
0040A354    83EE 06         SUB     ESI, 6
0040A357    B9 0E000000     MOV     ECX, 0E
0040A35C    29CE            SUB     ESI, ECX
0040A35E    BA AAEB2EC0     MOV     EDX, C02EEBAA
0040A363    C1E9 02         SHR     ECX, 2
0040A366    83E9 02         SUB     ECX, 2
0040A369    83F9 00         CMP     ECX, 0
0040A36C    7C 1A           JL      SHORT 0040A388
0040A36E    8B048E          MOV     EAX, DWORD PTR [ESI+ECX*4]
0040A371    8B5C8E 04       MOV     EBX, DWORD PTR [ESI+ECX*4+4]
0040A375    03C3            ADD     EAX, EBX
0040A377    C1C0 09         ROL     EAX, 9
0040A37A    03C2            ADD     EAX, EDX
0040A37C    81C2 D15C74FA   ADD     EDX, FA745CD1
0040A382    89048E          MOV     DWORD PTR [ESI+ECX*4], EAX
0040A385    49              DEC     ECX
0040A386  ^ EB E1           JMP     SHORT 0040A369
0040A388    61              POPAD
0040A389    61              POPAD
0040A38A    83F8 FF         CMP     EAX, -1
//判断连接外辅服务端是否成功.否之就跳走.
0040A38D    0F84 B9980000   JE      00413C4C

********************************************
整个验证的流程:
输入用户名和密码----->加密------->发送去服务端验证-------->合法就返回正确值.不合法就返回错误值

--------------->解密返回的数据--------->比较是否合法
*******************************************

偷个懒,直接去解密返回数据的地方做手脚.把自己抓到的正确数据强行放进去就可以了!


00413C28    61              POPAD                          //连接到服务器.发送和接收数据的过程没有发生意外.来这里
00413C29    E8 A4AF0100     CALL    0042EBD2               //我做手脚的地方!

                            0042EBD2    60              PUSHAD
                            0042EBD3    B9 F8000000     MOV     ECX, 0F8       //数据包的大小
                            0042EBD8    BF 08424300     MOV     EDI, 434208    //原接收数据的地址
                            0042EBDD    BE F0EB4200     MOV     ESI, 42EBF0    //我补丁数据的地址
                            0042EBE2    A1 0C424300     MOV     EAX, DWORD PTR [43420C]     //随机加密解密key拿出来
                            0042EBE7    A3 F4EB4200     MOV     DWORD PTR [42EBF4], EAX     //随机加密解密key放进去
                            0042EBEC    F3:A4           REP     MOVS BYTE PTR ES:[EDI], BYTE PTR>
                            0042EBEE    61              POPAD
                            0042EBEF    C3              RETN

00413C2E    90              NOP
00413C2F    90              NOP
00413C30    90              NOP
00413C31    90              NOP
00413C32    8B4D E4         MOV     ECX, DWORD PTR [EBP-1C]
00413C35    51              PUSH    ECX
00413C36    E8 3B9C0100     CALL    0042D876
00413C3B    E8 309C0100     CALL    0042D870
00413C40    A1 18424300     MOV     EAX, DWORD PTR [434218]
00413C45    5F              POP     EDI
00413C46    5E              POP     ESI
00413C47    5B              POP     EBX
00413C48    8BE5            MOV     ESP, EBP
00413C4A    5D              POP     EBP
00413C4B    C3              RETN

00413C4C    5F              POP     EDI                   //如果服务端连接失败或者是发送和接收数据的过程出错了.就会来这里
00413C4D    5E              POP     ESI
00413C4E    33C0            XOR     EAX, EAX
00413C50    5B              POP     EBX
00413C51    8BE5            MOV     ESP, EBP
00413C53    5D              POP     EBP
00413C54    C3              RETN

正确的已经解密的数据:
0042EBF0  F4 00 00 04 00 00 00 00 65 00 00 00 00 00 00 00  ?.....e.......
0042EC00  01 00 00 00 76 65 72 37 2E 36 00 00 00 00 00 00  [...ver7.6......
0042EC10  00 00 00 00 00 00 00 00 02 00 00 00 10 00 00 00  ........]......
0042EC20  C0 00 00 00 5B 53 45 50 2E 65 78 65 5D 7C 53 54  ?..[SEP.exe]|ST
0042EC30  52 31 3D 7C 53 54 52 32 3D 69 67 67 6B 65 66 66  R1=|STR2=iggkeff
0042EC40  61 7C 53 54 52 33 3D 7C 53 54 52 34 3D 7C 44 57  a|STR3=|STR4=|DW
0042EC50  31 3D 30 7C 44 57 32 3D 31 36 7C 53 54 52 35 3D  1=0|DW2=16|STR5=
0042EC60  76 65 72 33 2E 36 38 7C 53 54 52 36 3D 7C 53 54  ver3.68|STR6=|ST
0042EC70  52 37 3D 7C 44 57 33 3D 32 7C 53 54 52 38 3D 31  R7=|DW3=2|STR8=1
0042EC80  2C 34 2C 34 2C 30 2C 38 2C 30 2C 30 2C 33 30 30  ,4,4,0,8,0,0,300
0042EC90  30 2C 33 30 30 30 2C 31 30 30 2C 30 78 32 30 2C  0,3000,100,0x20,
0042ECA0  30 78 31 30 39 31 35 62 30 32 2C 30 78 31 30 39  0x10915b02,0x109
0042ECB0  32 43 46 30 43 2C 33 2C 30 78 31 30 31 35 30 42  2CF0C,3,0x10150B
0042ECC0  45 43 2C 30 78 31 30 30 39 31 46 31 43 2C 30 78  EC,0x10091F1C,0x
0042ECD0  31 30 30 65 43 31 34 34 2C 30 78 66 66 66 66 66  100eC144,0xfffff
0042ECE0  66 66 66 7C 00 00 00 00                          fff|....


------------------------------------------------------------------
【总    结】:
就这样.破解就完成了.还可以再完美一些的(连接服务器的地方NOP掉).懒得写了!

现在发布的这个就是免去了连接网络的版本!

 

一个游戏外挂的破解过程

【前    言】:网络游戏《凯旋》辅助工具的破解过程!

【软件名称】:绝影凯旋vip_7.6白银版

【下载页面】:http://www.pker.cc/ (经常访问不了) http://bbs.pker.cc/ 

【破解版下载地址】:http://www.weiersi.net/pk.rar    或http://www.00768.com/Yock_Web/Yock_Download/PKKXvip_76_Yock(1124).rar

【软件大小】:...

【应用平台】:WIN9X/WINNT/WIN2K/WINXP

【软件简介】:...

【软件限制】:ACP的壳+网络用户名验证

【文章作者】:辉仔Yock

【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机或是补丁文件任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希望大家在经济基础好的时候,支持共享软件!(在这里最此软件的作者以万二分的歉意鞠躬...)

【破解工具】:OD

—————————————————————————————————
【过    程】:

[REPLYVIEW]
之前的几个版本的加密算法很简单.到了现在这个7.6版的加密强了!

首先用了ACP壳的sdk加密.然后算法的过程也复杂了!

书写的过程只是简单的说说破解的思路.给读者一个关于网络验证的一个参考!

脱壳的过程我就不写了!

ACP的壳+sdk 分析的过程有点晕.但是进入主程序之后耐心分析就可以找到核心关键!

壳没有吃OEP的字节.
OEP=0042DD9F
0042DD9F    55              PUSH    EBP
0042DDA0    8BEC            MOV     EBP, ESP
0042DDA2    6A FF           PUSH    -1
0042DDA4    68 68144300     PUSH    431468
0042DDA9    68 60DD4200     PUSH    42DD60


下面就是关键的开始:

0040A347    E8 3C350200     CALL    0042D888
0040A34C    60              PUSHAD
0040A34D    60              PUSHAD
0040A34E    E8 00000000     CALL    0040A353
0040A353    5E              POP     ESI
0040A354    83EE 06         SUB     ESI, 6
0040A357    B9 0E000000     MOV     ECX, 0E
0040A35C    29CE            SUB     ESI, ECX
0040A35E    BA AAEB2EC0     MOV     EDX, C02EEBAA
0040A363    C1E9 02         SHR     ECX, 2
0040A366    83E9 02         SUB     ECX, 2
0040A369    83F9 00         CMP     ECX, 0
0040A36C    7C 1A           JL      SHORT 0040A388
0040A36E    8B048E          MOV     EAX, DWORD PTR [ESI+ECX*4]
0040A371    8B5C8E 04       MOV     EBX, DWORD PTR [ESI+ECX*4+4]
0040A375    03C3            ADD     EAX, EBX
0040A377    C1C0 09         ROL     EAX, 9
0040A37A    03C2            ADD     EAX, EDX
0040A37C    81C2 D15C74FA   ADD     EDX, FA745CD1
0040A382    89048E          MOV     DWORD PTR [ESI+ECX*4], EAX
0040A385    49              DEC     ECX
0040A386  ^ EB E1           JMP     SHORT 0040A369
0040A388    61              POPAD
0040A389    61              POPAD
0040A38A    83F8 FF         CMP     EAX, -1
//判断连接外辅服务端是否成功.否之就跳走.
0040A38D    0F84 B9980000   JE      00413C4C

********************************************
整个验证的流程:
输入用户名和密码----->加密------->发送去服务端验证-------->合法就返回正确值.不合法就返回错误值

--------------->解密返回的数据--------->比较是否合法
*******************************************

偷个懒,直接去解密返回数据的地方做手脚.把自己抓到的正确数据强行放进去就可以了!


00413C28    61              POPAD                          //连接到服务器.发送和接收数据的过程没有发生意外.来这里
00413C29    E8 A4AF0100     CALL    0042EBD2               //我做手脚的地方!

                            0042EBD2    60              PUSHAD
                            0042EBD3    B9 F8000000     MOV     ECX, 0F8       //数据包的大小
                            0042EBD8    BF 08424300     MOV     EDI, 434208    //原接收数据的地址
                            0042EBDD    BE F0EB4200     MOV     ESI, 42EBF0    //我补丁数据的地址
                            0042EBE2    A1 0C424300     MOV     EAX, DWORD PTR [43420C]     //随机加密解密key拿出来
                            0042EBE7    A3 F4EB4200     MOV     DWORD PTR [42EBF4], EAX     //随机加密解密key放进去
                            0042EBEC    F3:A4           REP     MOVS BYTE PTR ES:[EDI], BYTE PTR>
                            0042EBEE    61              POPAD
                            0042EBEF    C3              RETN

00413C2E    90              NOP
00413C2F    90              NOP
00413C30    90              NOP
00413C31    90              NOP
00413C32    8B4D E4         MOV     ECX, DWORD PTR [EBP-1C]
00413C35    51              PUSH    ECX
00413C36    E8 3B9C0100     CALL    0042D876
00413C3B    E8 309C0100     CALL    0042D870
00413C40    A1 18424300     MOV     EAX, DWORD PTR [434218]
00413C45    5F              POP     EDI
00413C46    5E              POP     ESI
00413C47    5B              POP     EBX
00413C48    8BE5            MOV     ESP, EBP
00413C4A    5D              POP     EBP
00413C4B    C3              RETN

00413C4C    5F              POP     EDI                   //如果服务端连接失败或者是发送和接收数据的过程出错了.就会来这里
00413C4D    5E              POP     ESI
00413C4E    33C0            XOR     EAX, EAX
00413C50    5B              POP     EBX
00413C51    8BE5            MOV     ESP, EBP
00413C53    5D              POP     EBP
00413C54    C3              RETN

正确的已经解密的数据:
0042EBF0  F4 00 00 04 00 00 00 00 65 00 00 00 00 00 00 00  ?.....e.......
0042EC00  01 00 00 00 76 65 72 37 2E 36 00 00 00 00 00 00  [...ver7.6......
0042EC10  00 00 00 00 00 00 00 00 02 00 00 00 10 00 00 00  ........]......
0042EC20  C0 00 00 00 5B 53 45 50 2E 65 78 65 5D 7C 53 54  ?..[SEP.exe]|ST
0042EC30  52 31 3D 7C 53 54 52 32 3D 69 67 67 6B 65 66 66  R1=|STR2=iggkeff
0042EC40  61 7C 53 54 52 33 3D 7C 53 54 52 34 3D 7C 44 57  a|STR3=|STR4=|DW
0042EC50  31 3D 30 7C 44 57 32 3D 31 36 7C 53 54 52 35 3D  1=0|DW2=16|STR5=
0042EC60  76 65 72 33 2E 36 38 7C 53 54 52 36 3D 7C 53 54  ver3.68|STR6=|ST
0042EC70  52 37 3D 7C 44 57 33 3D 32 7C 53 54 52 38 3D 31  R7=|DW3=2|STR8=1
0042EC80  2C 34 2C 34 2C 30 2C 38 2C 30 2C 30 2C 33 30 30  ,4,4,0,8,0,0,300
0042EC90  30 2C 33 30 30 30 2C 31 30 30 2C 30 78 32 30 2C  0,3000,100,0x20,
0042ECA0  30 78 31 30 39 31 35 62 30 32 2C 30 78 31 30 39  0x10915b02,0x109
0042ECB0  32 43 46 30 43 2C 33 2C 30 78 31 30 31 35 30 42  2CF0C,3,0x10150B
0042ECC0  45 43 2C 30 78 31 30 30 39 31 46 31 43 2C 30 78  EC,0x10091F1C,0x
0042ECD0  31 30 30 65 43 31 34 34 2C 30 78 66 66 66 66 66  100eC144,0xfffff
0042ECE0  66 66 66 7C 00 00 00 00                          fff|....


------------------------------------------------------------------
【总    结】:
就这样.破解就完成了.还可以再完美一些的(连接服务器的地方NOP掉).懒得写了!

现在发布的这个就是免去了连接网络的版本!