簡體   English   中英

保護 WebGL 游戲代碼

[英]Securing WebGL game code

作為經驗豐富的 Web 開發人員,我明白 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 為真)

是 Emscripten 和/或 asm.js 以某種方式保護 Javascript 代碼嗎?

不,這些只是編譯 unity -> webgl 代碼 -> javascript 的工具鏈的一部分

它甚至安全嗎?

不,沒有什么是安全的。 如果你有一款流行的游戲,人們就會破解它。

如果我已經寫了一個 javascript 游戲,我現在可以做什么來做 Emscripten 為 Unity3D 游戲所做的事情?

對於任何打算在網絡瀏覽器中玩的游戲,您應該編譯為 WebAssembly,這是現在的標准,這是在您發布問題一年后。 閱讀有關 Unity + Web Assembly 的更多信息

如果您將其導出的二進制文件編譯為 WebAssembly,則很難進行逆向工程,但並非不可能。 已經有可用的工具可以幫助做到這一點。

歸根結底,您無法阻止客戶端黑客攻擊。 計算服務器上所有重要的東西,如貨幣、健康等,否則你必須信任客戶端一些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM