【发布时间】:2020-07-10 12:21:58
【问题描述】:
我的目标是为所有混淆变量添加前缀。
例如:
而不是将myVar 混淆为x,它将使用前缀$pre,因此结果将类似于:$prex
我正在使用闭包编译器。在Closure-compiler wiki之后,我使用了rename_variable_prefix,不幸的是没有成功。
代码示例:
const ClosureCompiler = require('google-closure-compiler').jsCompiler;
console.log(ClosureCompiler.CONTRIB_PATH); // absolute path to the contrib folder which contains externs
const closureCompiler = new ClosureCompiler({
compilation_level: 'ADVANCED',
rename_variable_prefix: '$pre'
});
const compilerProcess = closureCompiler.run([{
path: 'file-one.js',
src: 'function add(node){
let test = window["test"];
if (node.hzix == test)return 1;
}
add(window["node"]);
window.add = add;',
sourceMap: null // optional input source map
}], (exitCode, stdOut, stdErr) => {
//compilation complete
});
结果代码为:
{\n"version":3,\n"file":"compiled.js",\n"lineCount":1,\n"mappings":"AAAiGA,MAAAC,IAAA,CAAjGA,QAAY,CAACC,CAAD,CAAM,CAA2B,GAAIA,CAAAC,EAAJ,EAAfH,MAAAI,KAAe,CAAsB,MAAO,EAAxD;",\n"sources":["file-one.js"],\n"names":["window","add","node","hzix","test"]\n}\n',
src: 'window.add=function(a){if(a.a==window.test)return 1};
结果不包含前缀“$pre”。我错过了什么?
【问题讨论】:
-
我也无法让它工作,不是用 Java,也不能用 JS 编译器......也许可以尝试返回几个版本?
-
其实我回滚到 20171203 并不能让它工作。 ¯_(ツ)_/¯
-
虽然关于 rename_variable_prefix 标志的文档说:“指定将添加到所有变量的前缀。”。源代码中的文档说:“指定所有全局变量的前缀”。所以这个标志添加了前缀,但仅适用于全局变量。 github.com/google/closure-compiler/blob/…
标签: javascript obfuscation google-closure-compiler prefix