使用客户端服务器模型防止Java游戏源代码的逆向工程

时间:2011-01-05 21:44:16

标签: java client-server reverse-engineering

我正在寻找方法来防止像runescape这样的Java游戏被黑客攻击,使用客户端服务器模型将重要的源代码保存在服务器中并将数据发送到客户端。我的问题是如何制作这样的东西,任何信息链接或文章都会有所帮助。

我也想知道某人可以从服务器发送什么样的信息,也可以在3d图形引擎中呈现,或者它是如何完成的?

4 个答案:

答案 0 :(得分:4)

对于被反编译的客户端,您无法做太多事情 - 您可以对源代码进行模糊处理,以使反向工程更加困难。这将使得可读源代码变得更加困难,但并非不可能。一个坚定而熟练的用户可以对客户进行逆向工程。

但是,您可以在无法恢复源代码的服务器上执行大量工作。例如,您可以为artifical intelligence编译NPC,并在服务器上进行所有物理计算,然后将结果发送给客户端。

事实上,这些计算应该在服务器上进行,以保持游戏的一致性并防止客户作弊。

客户端通常会执行大部分演示,例如3D渲染。这通常是出于性能原因在本地完成的,因此渲染可以充分利用客户端中的图形卡。

答案 1 :(得分:3)

  

我也想知道是什么样的   某人可以从中发送信息   也可以在。中呈现的服务器   3D图形引擎,或者它是如何完成的?

虽然我自己不是游戏/ 3D开发人员,但我发现这篇文章很有启发性(浏览他们的wiki以获取更多信息!)

Source Multiplayer Networking [valvesoftware.com]

答案 2 :(得分:2)

如果有足够的人力和时间,每个项目都可以进行逆向工程。如果您可以让测试人员/开发人员团队使用一段时间的程序,他们将能够模仿其功能。一个很好的例子是那里的MMORPG游戏(想想Ultima Online以及模仿它并与U​​O客户端合作的大量开源Shards)。

您可以对代码进行模糊处理,并使其难以反编译等,但是在项目开始时就超出了矫枉过正的程度。做一些人愿意支付的东西,采取非常基本的源代码保护预防措施,然后依靠版权法来保护你免受预留工程(它不完美,但没有任何东西)。

答案 3 :(得分:0)

理论上的客户端服务器模型可以通过仅在两者之间发送特定信息来防止多种形式的作弊,特别是来自玩家的游戏输入和玩家视图。

然而在实践中很少这样做。滞后可以防止实时游戏充分发挥,而无需客户端处理定位和物理工作的至少一部分。这意味着玩家拥有本地存储的信息副本,而这些信息不应该存在于游戏中。

客户端服务器模型对于具有宏操作的黑客攻击也很少。玩家可以破解他们的客户重复行动或协助行动(例如瞄准)。某些其他信息可以从被黑客户端根据服务器提供的信息重新创建。

渲染3D场景本身分为三个阵营。

  1. 然而,每个客户端都可以呈现它 他们觉得。如果你没关系 用剑摆A或剑摆B 如果他们没有不同的互动 与环境。
  2. 客户可以做出最佳猜测,如果错误则必须协调。我失去连接2秒钟。我的角色一直在你的屏幕上运行,因为你的客户认为这就是我要做的事情。我重新连接,但我告诉客户转。要么我跳到你的屏幕上,要么是我的。
  3. 服务器决定。服务器说桶是沿着算法路径C落下的。当下降的桶与环境相互作用时,这是最常见的,即它会撞击并损坏其他东西。