Unity3d保护代码

Unity3d保护代码,unity3d,Unity3d,我们在unity3d游戏中有一段代码,希望防止反编译(将在ios、android、webgl和unity插件中发布)。我们应该如何保护它?我们是否应该将这部分代码作为非托管插件(c++)编写?不可能发布无法反向工程的软件。这是可能的。有些软件包采用标准的unity packager格式。所以如果您使用动态资产或CodeContainer,则需要保护代码 所以你应该做的是: 如果您使用动态资产包:从代码生成dll或生成一个控制器类。 如果您使用CodeConainers(JS),则生成主C#控制器

我们在unity3d游戏中有一段代码,希望防止反编译(将在ios、android、webgl和unity插件中发布)。我们应该如何保护它?我们是否应该将这部分代码作为非托管插件(c++)编写?

不可能发布无法反向工程的软件。

这是可能的。有些软件包采用标准的unity packager格式。所以如果您使用动态资产或CodeContainer,则需要保护代码

所以你应该做的是:

如果您使用动态资产包:从代码生成dll或生成一个控制器类。 如果您使用CodeConainers(JS),则生成主C#控制器。在此之后,您可以扩展类或简单地调用方法


PS:如果你想保护非代码资产,你需要进行二进制编码。当您加载level或prefable时,您只需解码此资源并使用。

您可以使用模糊技术,它允许您保护您的包不受逆向工程的影响,但仅限于那些不太熟悉的人(我说的是高级逆向工程师,他们可以反编译您的代码并处理ASM,或者可以反编译您的iOS/Android项目)在任何情况下,您都可以使用unity asset store中的Remix模糊处理插件来模糊源代码


它是免费的容易的使用和支持许多基于unity的平台(android、ios)。

答案是“视情况而定”.一般来说,我不会太担心你的代码。这可能没什么特别的。即使我将所有反编译的单行为从构建中取出,我也不知道它们是如何一起形成软件的。因此,除非你在算法上做了一些特别出色的事情,你不想让别人看到,否则这就是pr可能不值得这么麻烦。模糊处理也是如此,考虑到对反射的严重依赖性,模糊处理是一个很难做到可靠的方法。@巴特,谢谢,但这段代码很重要,我们不想让它泄漏。那么你确实可以选择本机插件。但它增加的只是模糊性。不一定是安全性。你只是在减缓pe的速度希望反编译您的二进制文件的人。您永远无法完全阻止这种情况发生。如果有人发现您的二进制文件足够有趣,可以进行反编译,他们总会找到一种方法。默认情况下,默默无闻的Unity是您所能期望的最大值,而无需付出太多的努力,它甚至是值得麻烦的。是吗这段代码是多人游戏的一部分,你不想被骗子干扰?正如已经提到的,你发布的任何代码都可以通过足够的努力进行反编译,但是你可以通过给游戏客户端更少的权限来决定游戏状态来解决这个问题-少信任客户端,让服务器验证客户表示它的做法是合理的。如果我们对您试图实现的目标有更多了解,我们可能会提供更多帮助。如果代码可以解码代码,则可以通过查看解码时的操作来破坏加密。使用二进制加密,很难找到代码。因为图像、模型和纹理也是二进制的=)