我如何最好地混淆HTML/Javascript/WebGL代码
How do I best obfuscate HTML/Javascript/WebGL code?
我有一些HTML/Javascript/WebGL代码,我想混淆。我的代码由一个。html文件、几个。js文件和嵌入在。html文件中的GLSL代码组成。
我已经找到了工具UglifyJS,我可以用它来混淆。js文件一个接一个。我还找到了GLSL编译器工具,我可以用它来混淆GLSL代码。
这种方法有两个问题:
- 部分是手动的。我必须剪切粘贴和编辑。
- 由于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
您可以将GLSL文件保存在外部源中。我知道这应该会增加网站的总加载时间(更多的请求),但在我们的情况下,这并不明显。此外,3D应用程序在加载时需要下载(和处理!)大量数据。
至于重命名制服,我不认为你可以在不破坏某些用例的情况下安全地这样做。你可以使用模式匹配,但你必须给你的制服起非常具体的名字,即使这样,你也必须注意这些新名字不会干扰现有的名字。它类似于UglifyJS不改变对象内部字段的名称。
相关文章:
- fancybox html inside webgl earth javascript
- webGL,javascript:尝试访问属性1中超出范围的顶点
- 如何对齐画布旁边的文本和按钮(WebGL+JavaScript+CSS)
- 将clientWidth/clientHeight Javascript与webgl一起使用会返回问题
- JavaScript库-WebGL-2D动画不工作
- JavaScript 中的内联 webgl 着色器代码
- JavaScript 为 WebGL 加载纹理
- 关于JavaScript,WebSockets,WebGL的问题
- (3d对象到json到webgl).我能从webgl/javascript操作那个3d的皮肤吗
- JavaScript WebGL RGBA数组到屏幕
- 在纯javascript中使用processing.js时,导入processing.webgl用于3d画布
- WebGL纹理加载结果(Javascript)类型错误
- 带有WebGL的服务器端javascript
- 我如何最好地混淆HTML/Javascript/WebGL代码
- JavaScript:用onclick事件改变webgl的纹理
- WebGL和JavaScript应用程序中的颜色跟踪
- 如何在Javascript中绘制3d blezier曲线?(three.js, webGL)
- JavaScript (WebGL)开源光线追踪器(非实时)
- 使用Javascript, WebGL和HTML绘制正方形
- javascript webgl中的屏幕到世界坐标