javascript - 我如何最好地混淆 HTML/Javascript/WebGL 代码?

标签 javascript html three.js webgl

<分区>

我有一些 HTML/Javascript/WebGL 代码,我想对其进行混淆处理。 我的代码由一个 .html 文件、几个 .js 文件和嵌入在 .html 文件中的 GLSL 代码组成。

我找到了工具 UglifyJS我可以用它来一个一个地混淆 .js 文件。 我还找到了工具 GLSL Compiler我可以用它来混淆 GLSL 代码。

这种方法有两个问题:

  1. 部分是手动的。我必须剪切、粘贴和编辑。
  2. 由于 GLSL 编译器不会混淆 .js,因此无法更改 GLSL 中统一变量的名称。另外,如果我粘贴一个文件 在 UglifyJS 中包含一个函数,它不会改变名称 函数,因为它不知道从哪里调用它。

是否有任何工具或工具组合可以让我进行更少的手动操作和更完整的混淆?

最佳答案

对于 JS 我一直很喜欢这个脚本:

http://jsutility.pjoneil.net

我有多个 JS 文件,将其作为批处理脚本运行,它将所有文件合并到一个文件中,混淆它们,压缩它们,然后压缩它们。它很好用。我有超过 2mb 的 javascript 可以使用这个加上它的免费压缩到大约 350kb!

快速示例,从网站下载代码,然后大致创建一个 wsf 文件。

<job id="ObfuscateJavascript">

    <script language="VBScript">
        Function WSHInputBox(Message, Title, Value)
            WSHInputBox = InputBox(Message, Title, Value)
        End Function
    </script>

    <reference object="Scripting.FileSystemObject" />
    <script language="JScript" src="JSUtility_BatchCodeC.js" />
    <script language="JScript">

        var vbOKOnly = 0;
        var vbInformation = 64;
        var title = "What Project are you building for?";
        var prompt = "Enter a file name:";
        var WshShell = WScript.CreateObject("WScript.Shell");
        var result = WSHInputBox(prompt, title, "FileName");

        if (typeof result != "undefined") {
            InputFiles.push("File1.js");
            InputFiles.push("File2.js");
            InputFiles.push("File3.js");

            // Obfuscation options
            Obfuscate.Options = {
                DefinedGlobalVars: true, 
                ObjectMembers: false, 
                StringVariables: true, 
                MinimumStringLength: 12, 
                RestructureIfStmts: true
            };

            // Compaction options
            Compact.Options = {
                AddMissingSemicolons: true, 
                LeaveNewLines: false, 
                LeaveNewLineAndComment: false, 
                RemoveUnnecessarySemicolons: true
            };

            // Compression options
            Compress.Options = {
                ISO8859Compatable: true, 
                UTF8Compatible: true
            };

            // File output
            OutputFile = result + ".min.js";

            // Operations to apply to javascript
            Operations = {
                Validate: false, 
                Obfuscate: true, 
                Compact: true, 
                Compress: true, 
                StopOnWarning: false
            };

            JSUtilityBatch();
        }

    </script>
</job>

然后我用这个创建一个 bat 文件:

Script WSFFileNameYouUsed.wsf
pause

关于javascript - 我如何最好地混淆 HTML/Javascript/WebGL 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215836/

相关文章:

javascript - 当他们发出请求数据时,如何在单个表上制作加载栏?

JavaScript - 在哪里声明变量和定义函数?

javascript - THREEjs - 裁剪纹理而不是拉伸(stretch)以适应

javascript - 从 Three.js 编辑器导出场景并导入

javascript - Three.js 是否可以在同一场景上制作迷你相机/迷你 map 或第二个相机而不进行视口(viewport)裁剪

javascript - Twilio 任务路由器 : change worker activity when disconnected

javascript - 如何停止 div 加载 HTML 页面

html - css at-rule 在 style 属性中是否有效?

jquery - 使用 Spring MVC 的 &lt;script&gt; 标签中 JQuery 库的路径

javascript - jQuery 不适用于输入值