关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
6年前关门了。
改进这个问题
让我们假设,经过几年的工作,我将有一个三维游戏准备,可以下载的数以百万计的世界各地的人,这将是一个游戏上运行的客户机-服务器模式。
据我所知,如果其他人拥有.jar(本例中的客户端),任何人都可以查看他们的源代码。其他人拥有client.jar有什么风险?
检查部分(反作弊)无论如何都会在服务器端完成,所以我怀疑这里会有很大的风险,但我只是想对到底会发生什么有一个很好的看法,所以更确切地说,我要问以下问题:
我们可以做些什么来保护client.jar不被其他人看到呢?
即使人们可以完全控制client.jar源代码,但在单人环境中对游戏本身又有什么危害呢?
在客户机-服务器多人游戏环境中可能造成的相同危害是什么?
在个人和/或法律层面上可能对我/我的业务造成什么伤害?
如果其他人决定复制游戏怎么办,好吧,我知道如果其他人只是按照我的游戏1:1来构建自己的游戏,这种情况也会发生。
我想把它放到gamedev上,但我认为它更适合这里,因为它直接涉及编程语言java和抽象编程问题。
3条答案
按热度按时间rdrgkggo1#
我们可以做些什么来保护client.jar不被其他人看到呢?
混淆代码,这使阅读代码更困难,但并非不可能。
即使人们可以完全控制client.jar源代码,但在单人环境中对游戏本身又有什么危害呢?
他们会控制一切(改变任何他们喜欢的),我不知道这会对你的游戏产生什么样的影响,商业智慧。但是许多游戏提供了改变游戏环境的方法,这使得游戏更受玩家的欢迎。
在客户机-服务器多人游戏环境中可能造成的相同危害是什么?
这将使反向工程的游戏协议更容易,你会开始有[机器人]而不是真正的玩家玩游戏,此外,任何约束强加的游戏用户界面将变得毫无用处。
在个人和/或法律层面上可能对我/我的业务造成什么伤害?
取决于你如何货币化和在哪个国家经营(当地低点)。我想你应该咨询一下法律Maven。
yfwxisqw2#
“任何人都可以查看别人的源代码,如果他们拥有.jar”-这不是真的。您可以用源代码创建特殊的jar,但运行程序时不必这样做。程序可能只包含“二进制jar”,也就是说,包含编译过的java代码和/或资源,没有源代码。更正:因为二进制代码可以反编译回java代码(例如,使用http://jd.benow.ca/ ),对编译后的代码进行模糊处理或加密是很重要的(googleforjode、retroguard等)
我们可以做些什么来保护client.jar不被其他人看到呢?
您可以创建“瘦客户机”,它什么也不做,只是从指定的服务器下载主代码。当然,您必须保护通信量并使用这样的密钥验证,这样就不可能欺骗客户机使用假服务器。
即使人们完全控制client.jar源代码,有什么坏处
假设你不给任何人源代码级别的控制权
在客户机-服务器多人游戏环境中可能造成的相同危害是什么?
机器人和拒绝服务攻击
在个人和/或法律层面上可能对我/我的业务造成什么伤害?
这取决于具体实施和业务模式
如果其他人决定复制游戏怎么办,好吧,我知道如果其他人只是按照我的游戏1:1来构建自己的游戏,这种情况也会发生。
如果您的客户端程序是反向工程的,那么您很难保护它不被复制。否则您应该实现这样的网络协议,这使得复制不可能/无用。
i2loujxw3#
关于这一点,我要强调的是,所有的意见都是我自己的,不一定反映我的雇主的意见。
不,如果他们有jar,就不能看你的源代码。他们可以反编译成等效的源代码,这将是显着难以阅读,但可以找出。。。就像他们可以分解目标代码一样(不可否认,这会有点难以理解)。代码混淆确实会减慢他们的速度,但是做这件事的人也习惯于处理这个问题。java比其他一些语言更容易被反向工程。
版权保护通常只对诚实的人起作用。幸运的是,大多数人至少是适度诚实的。不诚实的对待它作为一个免费的拼图包括在您的产品。你可以让他们慢下来。但实际上,除非您使用特定类型的硬件辅助安全性(基本上,在单独封装的机器中运行程序的关键部分),否则您无法阻止它们--这往往会导致成本上升和/或让人们非常恼火,以至于他们会避避您的产品。大多数公司转而采用一种模式,要求注册代码以获得升级、支持、在线服务或其他任何东西。。。或者定价时假设会发生盗版,或者定价过低,盗版就不值得了。
或者,对于商业代码,在法庭上追查盗版。对于严肃的代码,大多数公司都非常清楚,允许盗版进入公司所造成的损失要比盗版所能节省的多得多;我见过员工因在工作中制作盗版而被当场解雇。
事实上,一些公司已经将‘盗版’作为其商业模式的一部分。”如果您是从朋友那里得到这个程序的,并且您喜欢它,请考虑给我们寄钱来支持开发人员和/或购买升级到当前版本的软件。不是每个人,但这很有帮助。
解决您对代码更改的问题:
我不是律师,你应该向律师咨询这个问题,但我的理解是你没有新的责任。如果他们把代码弄乱了,那是他们的错,也是他们的问题。
在单人环境中,他们所能做的就是弄乱自己的副本。如果他们弄坏了,那就是他们的问题。如果他们作弊,他们只是在骗取自己花钱买的游戏体验。
多人游戏是一个更大的问题;如果他们对游戏进行反向工程,他们可能会破坏你的数据库和其他玩家的游戏体验。据我所知,解决这个问题的唯一方法是将服务器设计成(a)只允许客户端做不会造成太大损害的事情,以及(b)观察玩家的行为,试图发现虐待行为,并将虐待玩家踢出系统。这很烦人,但这是现实。如果你能证明你已经做出了合理的努力来做到这一点,那么它应该能防止你在这个级别上承担任何可能的责任。。。。不过,我又不是律师,程序员提供的免费法律建议就像律师提供的免费编程建议一样。。。
建立他们自己的游戏镜像你的:如果你能检测到他们正在访问你的服务器,这是合法的。如果你有一些像俄罗斯方块或者猎雷者这样简单的东西,那么你会得到仿冒品,除非你愿意在法庭上追杀他们,否则你对此无能为力,除了向注册玩家提供升级等仿冒品得不到的东西。如果你写了一些复杂的东西,那么为了复制你的东西,他们可以创建自己的,所以这不太可能是一个纯粹的盗版问题。
至于远东地区的工业盗版等。。。再说一次,真的没有一个好的答案。
如果你找到了一个真正有效的解决方案,那应该是你的产品;世界将为你的门开辟一条路。但从长远来看,我真的认为这是不可能的;你所能做的就是放慢他们的速度,使用版权和许可协议,建立一个足够忠诚的粉丝群,他们宁愿与你合作,也不愿与你作对。