<分区>
我有一些 HTML/Javascript/WebGL 代码,我想对其进行混淆处理。
我的代码由一个 .html 文件、几个 .js 文件和嵌入在 .html 文件中的 GLSL 代码组成。
我找到了工具 UglifyJS我可以用它来一个一个地混淆 .js 文件。
我还找到了工具 GLSL Compiler我可以用它来混淆 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