首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护游戏的Java代码

保护游戏的Java代码
EN

Stack Overflow用户
提问于 2014-01-11 15:49:39
回答 3查看 986关注 0票数 1

让我们假设,经过几年的工作,我将准备一个3D游戏,可以被全世界数百万人下载,它将是一个运行在客户端服务器模型上的游戏。

据我所知,如果其他人拥有.jar (本例中的客户端代码),任何人都可以查看其他人的源代码。其他人拥有客户端.jar的风险有多大?

检查部分(防作弊)无论如何都会在服务器端完成,所以我怀疑这里是否会有很大的风险,但我只是想对可能发生的事情有一个好的看法,所以更准确地说,我要问以下问题:

  • 我们可以做些什么来保护,比如说,其他人阅读代码时的client.jar呢?
  • 即使人们能够完全控制client.jar源代码,在单玩家环境中也可以对游戏本身造成什么危害呢?
  • 在客户机-服务器多玩家环境中,同样的危害是什么?
  • 在个人和/或法律层面上,对我/我的业务可能造成什么危害?
  • 如果其他人决定复制这个游戏,好吧,我知道这也会发生什么,如果别人只是建立他们自己的游戏1:1镜像到我的游戏。

我想把它放在gamedev上,但我认为它更适合这里,因为它直接涉及编程语言- Java -和一个抽象的编程问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-11 16:25:46

关于这一点,我应该强调,所有意见都是我自己的,不一定反映出我的雇主的意见。

不,如果他们有jar,他们就不能看你的源代码。它们可以将其解压缩成等价的源代码,这将大大增加阅读难度,但可以计算出.正如他们所能做的那样--组装对象代码(诚然,这是比较难理解的)。代码混淆确实会减慢他们的速度,但是那些愿意这样做的人也习惯于处理这个问题。与其他语言相比,Java更容易被逆向设计。

版权保护一般只会让诚实的人诚实。幸运的是,大多数人至少有点诚实。不诚实的对待它作为一个免费的拼图包括在您的产品。你可以让他们慢下来。但实际上,除非你使用特定种类的硬件辅助安全(基本上,在一台单独的封装机器中运行程序的关键部分),否则你无法阻止它们--这往往会推高成本和/或惹恼人们,从而使他们避开你的产品。大多数公司转而采用了一种模式,即要求注册代码以获得升级、支持、在线服务或其他任何东西.或者假设会发生盗版行为,或者定价太低,以至于盗版是不值得的。

或者,对商业代码来说,在法庭上追查盗版。至于严正的守则,大部分公司都很清楚,容许盗版进入楼宇,会令他们蒙受更多损失,而不是盗用盗版。我见过很多雇员因在工作中制造盗版而被即时解雇。

事实上,一些公司已经将“盗版”作为其商业模式的一部分。“如果你从朋友那里得到这个程序,并且你喜欢它,请考虑给我们寄钱来支持开发者和/或购买一个升级到当前版本的软件。”令人惊讶的是,对于好的产品,许多人非常愿意自愿付款。不是每个人,但这有帮助。

在回答您有关更改代码的问题时:

我不是一个律师,你应该咨询一个这个问题,但我最好的理解是,你没有新的责任。如果他们搞砸了代码,那是他们的错,也是他们的问题。

在单播放器环境中,他们所能做的就是弄乱自己的副本。如果他们弄坏了,那就是他们的问题。如果他们欺骗,他们只是欺骗自己的游戏经验,他们付出了代价。

多人游戏是一个大得多的问题;如果他们逆向工程游戏,他们可以混乱你的数据库和其他玩家的游戏经验。据我所知,解决这一问题的唯一方法是设计你的服务器:(a)只允许客户做不会造成多大损害的事情,(b)观察玩家的行为,试图发现滥用和将滥用球员踢出系统。这很烦人,但这是现实。如果你能证明你已经做了合理的努力,它应该能保护你避免在这个水平上的任何可能的责任.但我不是律师,程序员的免费法律建议就像律师提供的免费编程建议.

建立他们自己的游戏镜像你的:如果你能发现他们正在访问你的服务器,这是合法的行动。如果你有像俄罗斯方块或雷手这样简单的东西,那么你就会得到仿冒,除非你愿意在法庭上追击他们,否则你就无能为力了,除了给注册球员提供升级等等,这些都是仿冒不会得到的结果。如果你写了一些复杂的东西,那么为了复制你的作品,他们可以创建自己的作品,所以这比纯粹的盗版更不可能是个问题。

至于远东地区的工业盗版……再说一遍,真的没有一个好的答案。

如果你找到一个真正有效的解决方案,那就应该是你的产品;世界将为你的大门开辟一条道路。但从长远来看,我真的认为这是不可能的;你所能做的就是放慢他们的速度,使用版权和许可协议,建立一个足够忠诚的粉丝群体,他们宁愿和你合作,也不愿和你作对。

票数 6
EN

Stack Overflow用户

发布于 2014-01-11 15:58:44

  • 我们可以做些什么来保护,比如说,其他人阅读代码时的client.jar呢? 混淆代码,使阅读代码更困难,但并非不可能。
  • 即使人们能够完全控制client.jar源代码,在单玩家环境中也可以对游戏本身造成什么危害呢? 他们将控制一切(改变任何他们喜欢的),我不知道这会如何影响你的游戏,商业智慧。但是许多游戏提供了改变游戏环境的方法,这使得玩家更喜欢游戏。
  • 在客户机-服务器多玩家环境中,同样的危害是什么? 它将使它更容易反向工程游戏协议,你将开始让机器人而不是真正的玩家玩游戏,此外,任何约束的游戏用户界面将变得无用。
  • 在个人和/或法律层面上,对我/我的业务可能造成什么危害? 这取决于你是如何货币化的,以及你在哪个国家经营(当地的最低水平)。我认为你应该向法律专家咨询一下。
票数 0
EN

Stack Overflow用户

发布于 2014-01-11 16:19:25

“如果别人拥有.jar,任何人都可以查看他们的源代码”--这不是真的。您可以使用源代码创建特殊的jar,但是您不必这样做才能运行程序。程序可能只包含“二进制jar”-也就是说,包含编译的java代码和/或资源,没有源。更正:,因为二进制代码可以反编译回java代码(例如,使用http://jd.benow.ca/ ),所以混淆或加密编译后的代码( google,RetroGuard等)是很重要的。

  • 我们可以做些什么来保护,比如说,其他人阅读代码时的client.jar呢?

您可以创建“瘦客户端”,但是可以从指定的服务器下载主代码。当然,您必须保护通信量,并使用这样的密钥身份验证,从而无法欺骗客户端使用假服务器。

  • 即使人们可以完全控制client.jar源代码,这有什么害处呢?

假设你没有把源代码级别的控制权交给任何人

  • 在客户机-服务器多玩家环境中,同样的危害是什么?

机器人和DOS-至少攻击

  • 在个人和/或法律层面上,对我/我的业务可能造成什么危害?

这取决于具体的实现和业务模式。

  • 如果其他人决定复制这个游戏,好吧,我知道这也会发生什么,如果别人只是建立他们自己的游戏1:1镜像到我的游戏。

如果你的客户程序是反向设计的,那么你很难保护它不被复制。否则,您应该实现这样的网络协议,这使得复制不可能/无用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21064329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档