让我们假设,经过几年的工作,我将准备一个3D游戏,可以被全世界数百万人下载,它将是一个运行在客户端服务器模型上的游戏。
据我所知,如果其他人拥有.jar (本例中的客户端代码),任何人都可以查看其他人的源代码。其他人拥有客户端.jar的风险有多大?
检查部分(防作弊)无论如何都会在服务器端完成,所以我怀疑这里是否会有很大的风险,但我只是想对可能发生的事情有一个好的看法,所以更准确地说,我要问以下问题:
我想把它放在gamedev上,但我认为它更适合这里,因为它直接涉及编程语言- Java -和一个抽象的编程问题。
发布于 2014-01-11 16:25:46
关于这一点,我应该强调,所有意见都是我自己的,不一定反映出我的雇主的意见。
不,如果他们有jar,他们就不能看你的源代码。它们可以将其解压缩成等价的源代码,这将大大增加阅读难度,但可以计算出.正如他们所能做的那样--组装对象代码(诚然,这是比较难理解的)。代码混淆确实会减慢他们的速度,但是那些愿意这样做的人也习惯于处理这个问题。与其他语言相比,Java更容易被逆向设计。
版权保护一般只会让诚实的人诚实。幸运的是,大多数人至少有点诚实。不诚实的对待它作为一个免费的拼图包括在您的产品。你可以让他们慢下来。但实际上,除非你使用特定种类的硬件辅助安全(基本上,在一台单独的封装机器中运行程序的关键部分),否则你无法阻止它们--这往往会推高成本和/或惹恼人们,从而使他们避开你的产品。大多数公司转而采用了一种模式,即要求注册代码以获得升级、支持、在线服务或其他任何东西.或者假设会发生盗版行为,或者定价太低,以至于盗版是不值得的。
或者,对商业代码来说,在法庭上追查盗版。至于严正的守则,大部分公司都很清楚,容许盗版进入楼宇,会令他们蒙受更多损失,而不是盗用盗版。我见过很多雇员因在工作中制造盗版而被即时解雇。
事实上,一些公司已经将“盗版”作为其商业模式的一部分。“如果你从朋友那里得到这个程序,并且你喜欢它,请考虑给我们寄钱来支持开发者和/或购买一个升级到当前版本的软件。”令人惊讶的是,对于好的产品,许多人非常愿意自愿付款。不是每个人,但这有帮助。
在回答您有关更改代码的问题时:
我不是一个律师,你应该咨询一个这个问题,但我最好的理解是,你没有新的责任。如果他们搞砸了代码,那是他们的错,也是他们的问题。
在单播放器环境中,他们所能做的就是弄乱自己的副本。如果他们弄坏了,那就是他们的问题。如果他们欺骗,他们只是欺骗自己的游戏经验,他们付出了代价。
多人游戏是一个大得多的问题;如果他们逆向工程游戏,他们可以混乱你的数据库和其他玩家的游戏经验。据我所知,解决这一问题的唯一方法是设计你的服务器:(a)只允许客户做不会造成多大损害的事情,(b)观察玩家的行为,试图发现滥用和将滥用球员踢出系统。这很烦人,但这是现实。如果你能证明你已经做了合理的努力,它应该能保护你避免在这个水平上的任何可能的责任.但我不是律师,程序员的免费法律建议就像律师提供的免费编程建议.
建立他们自己的游戏镜像你的:如果你能发现他们正在访问你的服务器,这是合法的行动。如果你有像俄罗斯方块或雷手这样简单的东西,那么你就会得到仿冒,除非你愿意在法庭上追击他们,否则你就无能为力了,除了给注册球员提供升级等等,这些都是仿冒不会得到的结果。如果你写了一些复杂的东西,那么为了复制你的作品,他们可以创建自己的作品,所以这比纯粹的盗版更不可能是个问题。
至于远东地区的工业盗版……再说一遍,真的没有一个好的答案。
如果你找到一个真正有效的解决方案,那就应该是你的产品;世界将为你的大门开辟一条道路。但从长远来看,我真的认为这是不可能的;你所能做的就是放慢他们的速度,使用版权和许可协议,建立一个足够忠诚的粉丝群体,他们宁愿和你合作,也不愿和你作对。
发布于 2014-01-11 15:58:44
发布于 2014-01-11 16:19:25
“如果别人拥有.jar,任何人都可以查看他们的源代码”--这不是真的。您可以使用源代码创建特殊的jar,但是您不必这样做才能运行程序。程序可能只包含“二进制jar”-也就是说,包含编译的java代码和/或资源,没有源。更正:,因为二进制代码可以反编译回java代码(例如,使用http://jd.benow.ca/ ),所以混淆或加密编译后的代码( google,RetroGuard等)是很重要的。
您可以创建“瘦客户端”,但是可以从指定的服务器下载主代码。当然,您必须保护通信量,并使用这样的密钥身份验证,从而无法欺骗客户端使用假服务器。
假设你没有把源代码级别的控制权交给任何人
机器人和DOS-至少攻击
这取决于具体的实现和业务模式。
如果你的客户程序是反向设计的,那么你很难保护它不被复制。否则,您应该实现这样的网络协议,这使得复制不可能/无用。
https://stackoverflow.com/questions/21064329
复制相似问题