a5656456 发表于 2015-5-26 20:02:01

捕鱼游戏 HGE打鱼防止外挂,添加CRC效验方法含代码

1、修改Cmd_Fish.h,加入函数,我这里写成了inline是避免编译时提示重复声明,你也可以将去掉,然后这里只留声明,实现挪到别的公共单元的cpp里。http://www.622862.com/upFiles/infoImg/2015032785609777.jpg
2、象这样,为每一个结构体加上crc字段:
struct CMD_C_Fish20Config {
int crc;
DWORD game_id;
int catch_count;
double catch_probability;
};

3、修改Game_Manager.cpp中的SendSocketData函数:
bool GameManager::SendSocketData(WORD sub_cmdid, void* data, WORD data_size) {
if (client_kernel_ == NULL) return false;
if (client_kernel_->IsLookonMode()) return false;
if (data_size>sizeof(int)){
    *((int *)data)=FishCRC32((char *)data+sizeof(int),data_size-sizeof(int));
}
return client_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);
}http://www.622862.com/upFiles/infoImg/2015032785640073.jpg


asd222111 发表于 2015-5-31 17:27:59

很不错

asd222111 发表于 2015-5-31 17:35:35

顶顶多好

asd222111 发表于 2015-5-31 16:49:11

LZ真是人才

a5894432 发表于 2015-5-31 17:30:35

厉害厉害

a589asd2 发表于 2015-5-31 17:45:26

真的很期待。。。加油

love7cs 发表于 2015-8-20 20:46:18

感觉好贵哦

asd222111 发表于 2015-8-20 20:31:17

这个是好东西。

asd222111 发表于 2015-8-20 19:50:38

路过,淡淡的忧伤

a589asd2 发表于 2015-8-20 20:00:50

伤心!!!没有金币
页: [1] 2
查看完整版本: 捕鱼游戏 HGE打鱼防止外挂,添加CRC效验方法含代码