搜索
楼主: Rulzy

[2010-10-18] CS1.5 开下载防 cmd dlfile 攻击补丁 V1.4 [开源]

[复制链接]
发表于 2010-6-10 12:29:24 | 显示全部楼层 来自 中国–广东–河源
我有个插件可以做到玩家CMD下载与玩家自动下载达到一样的效果,玩家CMD下载东西照样可以下载,但对服务器没有一点影响,服务器的PING一点没有面,变的是玩家的PING
回复

使用道具 举报

发表于 2010-6-10 12:31:33 | 显示全部楼层 来自 中国–重庆–重庆
本帖最后由 ghost4.12 于 2010-6-10 12:48 编辑

R版
你可以看下这个问题
不知道有没有利用价值

我发现这些通过这些简单的代码测试
玩家链接服务器的时候 玩家与服务器之间的数据发送
服务器控制台发送的数据say 内容显示次数都不一样

say 3333333 在玩家进入和退出的时候都会执行很多次
会不会与你的补丁检测有些联系 导致误判
  1. public client_connect ( id )
  2. {
  3.         server_cmd("say 1111111")
  4.         return PLUGIN_CONTINUE
  5. }

  6. public client_putinserver ( id )
  7. {       
  8.         server_cmd("say 2222222")
  9.         return PLUGIN_CONTINUE
  10. }  

  11. public client_command(id)
  12. {
  13.         server_cmd("say 3333333", id)
  14.         return PLUGIN_HANDLED
  15. }
复制代码
这是控制台的信息

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

 楼主| 发表于 2010-6-10 13:17:57 | 显示全部楼层 来自 中国–福建–漳州
client_command 肯定会执行很多次了,因为每一条客户端命令都会执行一次 client_command ,而玩家连接过程中是要发送几次命令的,进入游戏后也会发送几次命令的。
回复

使用道具 举报

 楼主| 发表于 2010-6-10 13:21:22 | 显示全部楼层 来自 中国–福建–漳州
本帖最后由 Rulzy 于 2010-6-10 13:24 编辑
  1. procedure C_ClientCommand(Player: Pointer); cdecl;
  2. var
  3.   Command: string;
  4.   Index, UserID: Integer;
  5.   AuthID: string;
  6.   BanTime: Integer;
  7. begin
  8.   Command:=LowerCase(gEngFuncs.pfnCmd_Argv(0));
  9.   if Command='dlfile' then
  10.   begin
  11.     Index:=gEngFuncs.pfnIndexOfEdict(Player);
  12.     if (Index>=1) and (Index<=gpGlobals.maxClients) and gPlayers[Index].InGame then
  13.     begin
  14.       UserID:=gEngFuncs.pfnGetPlayerUserId(Player);
  15.       AuthID:=gEngFuncs.pfnGetPlayerAuthId(Player);
  16.       BanTime:=Trunc(gEngFuncs.pfnCVarGetFloat('antidlfile_bantime'));
  17.       if BanTime<0 then
  18.       begin
  19.         LogPrint('Kicked "%s<%d><%s><>" (address "%s") due to using "cmd dlfile" command.',
  20.           [gPlayers[Index].Name, UserID, AuthID, gPlayers[Index].Address]);
  21.         gEngFuncs.pfnClientPrintf(Player, print_console, 'You have been kicked due to using "cmd dlfile" command.'#10);
  22.         gEngFuncs.pfnServerCommand(PChar(Format('kick #%d'#10, [UserID])));
  23.         gEngFuncs.pfnServerExecute;
  24.       end else begin
  25.         LogPrint('Banned "%s<%d><%s><>" (address "%s") due to using "cmd dlfile" command.',
  26.           [gPlayers[Index].Name, UserID, AuthID, gPlayers[Index].Address]);
  27.         gEngFuncs.pfnClientPrintf(Player, print_console, 'You have been banned due to using "cmd dlfile" command.'#10);
  28.         gEngFuncs.pfnServerCommand(PChar(Format('kick #%d'#10, [UserID])));
  29.         gEngFuncs.pfnServerExecute;
  30.         gEngFuncs.pfnServerCommand(PChar(Format('wait; addip %d %s; wait; writeip;'#10, [BanTime, gPlayers[Index].Address])));
  31.       end;
  32.       gpMetaGlobals.mres:=MRES_SUPERCEDE;
  33.       Exit;
  34.     end;
  35.   end;
  36.   gpMetaGlobals.mres:=MRES_IGNORED;
  37. end;
复制代码
这是判断代码。只有玩家执行了 dlfile 命令,才有可能被踢的啊。如果说有误踢,可能在于判断gPlayers[Index].InGame上,而没有使用 dlfile 命令的,又怎么会被踢呢?实在想不通。
回复

使用道具 举报

发表于 2010-6-10 13:26:55 | 显示全部楼层 来自 中国–重庆–重庆
哦  明白了


其实R版 已经能捕获dlfile 已经很好了
只是不明白为什么会误踢呢?
回复

使用道具 举报

发表于 2010-6-10 13:29:06 | 显示全部楼层 来自 中国–重庆–重庆
是不是可以把 kick by console  换成 让客户端自己 disconnect 呢?
回复

使用道具 举报

 楼主| 发表于 2010-6-10 13:33:59 | 显示全部楼层 来自 中国–福建–漳州
对了,单机建主,使用 metamod,不加载任何插件(addons/metamod/plugins.ini中没有加载任何插件),为什么不能选择队伍呢?有谁知道吗?我找了几个版本,客户端版本号都是2056。不知道大家使用的是什么版本的呢?使用 metamod 是否正常?另外问一下,为什么一定要使用 cstrike.exe ,而不用 hlds.exe 来建主呢?
回复

使用道具 举报

发表于 2010-6-10 13:36:08 | 显示全部楼层 来自 中国–天津–天津
支持!不急慢慢做!我用www的那个版本!
回复

使用道具 举报

 楼主| 发表于 2010-6-10 13:37:14 | 显示全部楼层 来自 中国–福建–漳州
是不是可以把 kick by console  换成 让客户端自己 disconnect 呢?
ghost4.12 发表于 2010-6-10 13:29
也可以,不过可能效果没这么好,因为玩家自己断开连接,时间上要比从服务器上踢出要慢。与玩家的连接断开越快,对服务器的影响越小。
回复

使用道具 举报

发表于 2010-6-10 13:41:58 | 显示全部楼层 来自 中国–重庆–重庆
我有时候AMXX代码写错了  也会导致不能选择队伍
进去就一直在定角落动不了
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表