保护WebGL游戏代码

时间:2017-12-08 10:40:41

标签: javascript unity3d emscripten asm.js anti-cheat

作为经验丰富的网络开发人员,我了解javascript代码不安全,但只能缩小/混淆。

然而,许多游戏引擎都有足够的信心允许他们的引擎代码和客户的游戏代码在客户端/浏览器中下载并可见。

-

尝试理解Unity3D是如何做到的,我遇到了客户端/浏览器下载的文件的以下细分:

  • 包含asm.js运行时和JavaScript插件的MyProject.asm.framework.unityweb文件。

  • 包含播放器的asm.js模块的MyProject.asm.code.unityweb文件。

  • 包含二进制图像的MyProject.asm.memory.unityweb文件,用于初始化播放器的堆内存。

  • 包含资产数据和场景的MyProject.data.unityweb文件。

来源: https://docs.unity3d.com/Manual/webgl-building.html

-

然后我看到他们正在使用emscripten 编译他们的C / C ++代码到Javascript:

To run in WebGL, all code needs to be JavaScript. We use the emscripten compiler toolchain to cross-compile the Unity runtime code (written in C and C++) into asm.js JavaScript. asm.js is a very optimizable subset of JavaScript which allows JavaScript engines to AOT-compile asm.js code into very efficient native code.

来源: https://docs.unity3d.com/Manual/webgl-gettingstarted.html

-

问题:

  1. Emscripten和/或asm.js是否以某种方式保护了Javascript代码?怎么样?
  2. 它是否安全?如果我真的很努力,我可以从这段代码中“窃取”某些东西并为游戏写一个黑客/作弊:https://files.unity3d.com/jonas/AngryBots/Release/AngryBots.js
  3. 如果我已经编写了一个javascript游戏,我现在可以做些什么来做Emscripten为Unity3D游戏做的事情? (假设#2为真)

1 个答案:

答案 0 :(得分:1)

保护Javascript代码的是Emscripten和/或asm.js吗? 不知何故?

不,这些只是编译统一性-> webgl代码-> javascript

的一部分。

它甚至安全吗?

不,没有什么是安全的。如果您有受欢迎的游戏,那么人们就会对其进行破解。

如果我已经写过JavaScript游戏,那么我现在该怎么做Emscripten为Unity3D游戏所做的事情?

对于打算在Web浏览器中玩的任何游戏,您应该现在将其编译为WebAssembly,这是在您发布问题后的第一年。 Read more about Unity + Web Assembly

如果要编译为WebAssembly的二进制文件,则很难对其进行逆向工程,但并非不可能。已经有可用的工具可以帮助您做到这一点。

最终,您无法阻止客户端黑客入侵。计算服务器上所有重要的东西,例如货币,健康状况等。否则,您必须信任一些东西给客户。