呃,寒假闲来无事,本来安排好的目标也懒得看了,百般无聊之下于是玩起了网游(偶第一次玩网游)~~。。

那啥,发现这个游戏的玩家的等级都是挂上去的,放假前我们班的同学都玩这个游戏,并且好多都买了外挂,看我淘宝的消费记录:

某网游及外挂破解手记_第1张图片

那啥,好不容易收的压岁钱不能买外挂呀,于是,破解之。。

外挂使用:
1:要求外挂账号与你的游戏账号必须是一样的,否则无法登陆,密码无所谓。


某网游及外挂破解手记_第2张图片

2:新用户有两天的免费使用期

某网游及外挂破解手记_第3张图片

ok,对外挂抓包,发现与服务器交流使用的chunked 协议:

 1 1    0.0 . 0.0 : 3753    222.73 . 225.182 : 80    151   Send  
 2 0000    47   45   54   20  2F 6C 6F  67   69  6E 2E  70   68   70  3F 6D    GET  / login.php?m
 3 0010   3D  31   26   75  3D  63   64   63   64   63   64   26   70  3D  63   64      = 1 & u = cdcdcd & p = cd
 4 0020    63   64   63   64   26  6B 3D  37   38   38   39   35   37   34   34   20     cdcd & k = 78895744  
 5 0030    48   54   54   50  2F  31  2E  31  0D 0A  55   73   65   72  2D  41     HTTP / 1.1 ..User - A
 6 0040    67   65  6E  74  3A  20  4D  69   63   72  6F  73  6F  66   74   20     gent: Microsoft 
 7 0050    49  6E  74   65   72  6E  65   74   20   45   78   70  6C 6F  72   65     Internet Explore
 8 0060    72  0D 0A  48  6F  73   74  3A  20  6C 6F  67   69  6E 2E  77     r..Host: login.w
 9 0070   6C  71   78   32   77   67  2E  63  6F 6D 0D 0A  43   61   63   68     lqx2wg.com..Cach
10 00 80    65  2D  43  6F 6E  74   72  6F 6C 3A  20  6E 6F 2D  63   61     e - Control: no - ca
11 00 90    63   68   65  0D 0A 0D 0A                               che.
12
13 2    222.73 . 225.182 : 80    0.0 . 0.0 : 3753    293   Recv  
14 0000    48   54   54   50  2F  31  2E  31   20   32   30   30   20  4F 4B 0D    HTTP / 1.1   200  OK.
15 0010   0A  44   61   74   65  3A  20   57   65   64  2C  20   31   31   20   46     .Date: Wed,  11  F
16 0020    65   62   20   32   30   30   39   20   30   38  3A  34   35  3A  33   30     eb  2009  0 8 : 45 : 30
17 0030    20   47  4D  54  0D 0A  53   65   72   76   65   72  3A  20   41   70      GMT..Server: Ap
18 0040    61   63   68   65  2F  32  0D 0A  58  2D  50  6F  77   65   72   65     ache / 2 ..X - Powere
19 0050    64  2D  42   79  3A  20   50   48   50  2F  35  2E  32  2E  36  0D    d - By: PHP / 5.2 . 6 .
20 0060   0A  63   61   63   68   65  2D  63  6F 6E  74   72  6F 6C 3A  20     .cache - control: 
21 0070   6E 6F 2D  63   61   63   68   65  0D 0A  56   61   72   79  3A  20     no - cache..Vary: 
22 00 80    41   63   63   65   70   74  2D  45  6E  63  6F  64   69  6E  67  2C    Accept - Encoding,
23 00 90    55   73   65   72  2D  41   67   65  6E  74  0D 0A  54   72   61  6E    User - Agent..Tran
24 00A0   73   66   65   72  2D  45  6E  63  6F  64   69  6E  67  3A  20   63     sfer - Encoding: c
25 00B0   68   75  6E 6B  65   64  0D 0A  43  6F 6E  74   65  6E  74  2D    hunked..Content -
26 00C0   54   79   70   65  3A  20   74   65   78   74  2F  68   74  6D 6C 0D    Type: text / html.
27 00D0  0A 0D 0A  34   63  0D 0A  41   53   69   31   78   38  4B  38   73     4c..ASi1x8K8s
28 00E0    38  6D  35   70   69   34   67   43   72   57   39   78   74   72  4B  73     8m5pi4gCrW9xtrKs
29 00F0   62  7A 6B 4F  69   41   79  4D  44   41   35  4C  54   41   79  4C    bzkOiAyMDA5LTAyL
30 0100    54   45  7A  49   44   45   32  4F 6A  51   30  4F 6A 4D  30   30     TEzIDE2OjQ0OjM00
31 0110    39  6A  47   39  4B  41   44  4C  46   67  6D  42   65   47   47   78     9jG9KADLFgmBeGGx
32 0120   6D 6A  37  0D 0A                                     mj7..
33


没错,加过密的...迷糊...

PEiD 一下 ,加壳了:

某网游及外挂破解手记_第4张图片

偶非得不反汇编,不解密,不破坏原程序破解它。

既然外挂不解密,不反汇编是行不了,那么破解游戏吧。。

正常启动游戏,登陆,并抓包:

某网游及外挂破解手记_第5张图片

没错,加密了,咋法? 咱也不费脑子解密了,拿来主义吧。

ok,拿来C++,写代码:
static   char  PACKET[]  =   {

    
0x300x800xD30xC50xC50xC20xAD0xAA0xB70xAB0xB1
    
0xA80x000xC60xAD0xA50xA90xA60xA50xBD0xA10xAD0xAA
}
;

int  WINAPI MySend( SOCKET  s ,  const   char   *  buff ,  int  len ,  int  flags ) {
//自定义函数,用来Hook 系统的send函数

    
const char * pbuff = buff;
    
char * tmp = NULL;
    
int rtn , length = len;

    printf(
"\n[DLL] Send:< %s >" , buff );

    
if( len >= 2 && ( buff[0== (char)0x30 && buff[1== (char)0x80 ) ){
        printf(
"\n[DLL] INFO: filter expired , take place of it ");

        
if( packets == 0 ){
            pbuff 
= PACKET ;
            length 
= sizeof( PACKET);
            memcpy( data , buff , 
15 );
        }
else if( memcmp( buff , data , 15 ) == 0 ){
            pbuff 
= PACKET ;
            length 
= sizeof( PACKET );
            packets 
= 0;
        }


    
/**//*}else if( buff[0] == 0x06 && buff[1] == 0xB2 ){
        pbuff = PACKET2;
        length = sizeof( PACKET2 );
*/

    }
else{
        
if( buff[0== 0x80 ){
            length 
= len + 1;
        }
else{
            length 
= len + 2;
        }


        tmp 
= new char[ length ];
        tmp[
0= 0x30;
        tmp[
1= 0x80;
        memcpy( 
&tmp[ length -len ] , buff , len );
        pbuff 
= tmp ;
        
    }

    UnHookApi( 
&info );
    
if( pbuff[2== 0x06 && pbuff[3== 0xB2 ){
        pbuff 
= PACKET2;
        length 
= sizeof( PACKET2 );
    }

    rtn 
= send( s , pbuff ,length , flags);
    HookApi( 
&info );
    packets 
++ ;
    
if( tmp ){
        delete [] tmp ;
        tmp 
== NULL;
    }

    
return rtn;
}


编译成DLL 注入到 游戏中, 当游戏第一次发送登陆包时( 0x30 0x80 开头),把它替换成包含正确用户名密码的数据包。

哈哈,用cdcdcd(随便的新用户)登陆外挂,并启动游戏,Hook掉游戏,登陆,

某网游及外挂破解手记_第6张图片

某网游及外挂破解手记_第7张图片

点登录,看看出来啦不:

某网游及外挂破解手记_第8张图片



然后免费挂机吧。。。