node.js用于客户端文件的模糊处理工具

时间:2015-06-04 17:23:16

标签: javascript node.js obfuscation

我正在寻找类似这个工具或类似的东西: http://javascriptobfuscator.com/Javascript-Obfuscator.aspx

但作为node.js的模块,因此您可以在发送客户端js文件之前对其进行模糊处理。

上面的url工具做了一些事情,但最重要的是它将引号和变量名之间的字符串更改为不可读的形式。

我尝试编写仅用于编码字符串的代码,但这会导致代码损坏:

var output = str.replace(/(")(([^"\\]|\\.)+)(")/gi, function(match, p1, p2, p3, p4) {
     return p1 + someEncodingFunc(p2) + p4;
});

编辑:

感谢robertklep,我发现了混淆模块。它几乎做得很好。也许有人可以帮我解决这个问题? https://github.com/uxebu/confusion/issues/1

您可以在项目页面的代码输出中看到问题:

(function(_x24139) {
  a[_x24139[0]](called[_x24139[1]](_x24139[2]));
  an[_x24139[3]](_x24139[4], _x24139[5], _x24139[6]);
}).call(
  this,
  ["property", "with", "a string literal", "other", "call", "is", "here"]
);

我只需要在数组中混淆这些字符串。我注意到如果字符串中有任何utf8字符,那么它将与\ uXXXX形式混淆。但只有utf8。如果这样可以将ascii混淆为\ xYY形式......基本上所有字符。

1 个答案:

答案 0 :(得分:3)

为什么不试试JScrambler呢?它不仅具有针对字符串和控制流的更多源代码转换,而且还具有一堆代码陷阱和称为自防御的运行时保护。 此外,它为我开箱即用。他们声称符合每个JS lib,现在他们是唯一正式支持Node.js的AFAIK解决方案:
Jscrambler Compliance Report

我不认为Uglify是个不错的选择。它是一个代码优化器,并不是为了保护您的代码。它确实重命名了变量和函数,但这太弱了,无法考虑保护。