请选择 进入手机版 | 继续访问电脑版

李逵捕鱼HGE打鱼防止外挂,添加CRC效验方法

[复制链接]
查看: 3984|回复: 1

378

主题

419

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
19150
QQ
发表于 2017-12-22 14:06:21 | 显示全部楼层 |阅读模式
1、修改Cmd_Fish.h,加入函数,我这里写成了inline是避免编译时提示重复声明,你也可以将去掉,然后这里只留声明,实现挪到别的公共单元的cpp里。

李逵捕鱼HGE打鱼防止外挂

李逵捕鱼HGE打鱼防止外挂

2、象这样,为每一个结构体加上crc字段:
structCMD_C_Fish20Config {
  int crc;
  DWORD game_id;
  int catch_count;
  double catch_probability;
};

3、修改Game_Manager.cpp中的SendSocketData函数:
boolGameManager::SendSocketData(WORD sub_cmdid, void* data, WORD data_size) {
  if (client_kernel_ == NULL) return false;
  if (client_kernel_->IsLookonMode()) returnfalse;
  if (data_size>sizeof(int)){
    *((int *)data)=FishCRC32((char*)data+sizeof(int),data_size-sizeof(int));
  }
  returnclient_kernel_->SendSocketData(MDM_GF_GAME, sub_cmdid, data, data_size);
}
这样子就不用挨个修改上面的函数赋值了。

4、服务器端修改 table_frame_sink.cpp,处理收到游戏消息的命令,加上前置的处理:
if(data_size>sizeof(int)){
        if(*((int *)data)!=FishCRC32((char*)data+sizeof(int),data_size-sizeof(int))){
        //无效的客户端数据包,踢掉他
        }
        data=(char *)data+sizeof(int);
        data_size-=sizeof(int);
}

李逵捕鱼HGE打鱼防止外挂

李逵捕鱼HGE打鱼防止外挂



回复

使用道具 举报

0

主题

1

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2018-6-6 15:08:34 | 显示全部楼层
谢谢楼主哦





回复

使用道具 举报

请登陆后参与评论

高级模式
B Color Image Link Quote Code Smilies

本版积分规则