0

我在某处阅读了一段代码,该代码承诺它可以保护应用程序 Winsock 功能免受数据包编辑器的影响。

我运行一个游戏服务器,这对我来说真是个好消息。但这真的可能吗?就像在我的游戏可执行文件中添加一个使用 detours 的 DLL 来保护我的 winsock 函数不被劫持?

就像他们将数据包编辑器连接到我的应用程序一样,他们不会在数据包记录中看到任何内容?

或者将我的应用程序的过程从这些工具中隐藏起来是一种更好的方法?

谢谢你。请讨论。

我找到的代码:http: //pastebin.com/XtfSHxBL

4

3 回答 3

3

如果您将此类代码添加到您的游戏中,我会拒绝它;)

克服它。
客户端不安全,永远不能被信任。

此外,我可以在两者之间切换一个 linux 路由器,并在那里捕获数据包..

如果您不想捕获您的 winsock 数据,则需要使用良好的非对称加密算法(如 PGP)对其进行加密,然后再将数据发送到 winsock。

如果这是真的,一个更好的主意是使用 isdebuggerpresent 来关闭程序。但是您需要加密可执行文件,因为否则我只需使用 IDA 将其反汇编,然后将 isdebuggerpresent 修补到 NOP,或者在运行时通过 createremotethread 将其修补为 0xe9 并返回 false,顺便说一下,文件校验和检查无法检测到.

但是,如果我劫持 isdebuggerpresent WinAPI 函数并 nop 它,这样你仍然很容易受到攻击。这也可以通过 MS 绕道来实现;)

于 2013-04-15T11:55:31.620 回答
2

任何类似的事情都是微不足道的。专注于保护实际协议,使用加密,在服务器端验证一切。

我会在评论中发布这个,但显然你需要声誉才能做到这一点。

于 2013-04-15T12:00:38.823 回答
1

在某种程度上,这是可能的。然而,没有什么能阻止顽固的黑客。

我记得的一种可能性(因为我调查了对这个“安全”函数导入的攻击)被 .NET 运行时使用,以保护它免受劫持注册表读取/打开函数(出于与 CAS 相关的安全原因)。
基本上,他们决定硬连线函数地址,为许多 Windows 变体(几个服务包)指定直接地址。显然,这是只有你是 MS 才能熟练做到的事情(你打了 advapi32,改变了 Reg* 函数的地址?你也提交了一个 mscoree 的补丁)。

它使捕获和拦截这些功能变得困难(至少,比仅使用 IAT 更困难),但正如我所说,我发现它是如何完成检查攻击的......

使用 Detour,您仍然使用 IAT,但您可以检查是否有人修改它,并“恢复”(重写)原始地址。或者至少检查一下。这就是 Punkbuster 过去所做的,IIRC。请注意,这证明没有什么比得上安全客户端(人们了解 PB 在做什么 -> 他们规避了它)。

于 2013-04-15T11:59:33.990 回答