【发布时间】:2013-06-04 07:35:04
【问题描述】:
我为 JavaScript 尝试了不同的混淆工具,但是当我使用 resultant 时它不起作用。
我删除了所有的 cmets,单行和多行 cmets,并美化了代码,以便有正确的分号和正确的格式。
我的问题是:混淆代码之前的先决条件是什么?
【问题讨论】:
-
确保您的语法完美无缺。如果你在 IE 中加载它,如果不是,它将失败。其他浏览器有时仍然可以工作。诸如尾随逗号、缺少分号等在技术上是无效的(在 IE 中会失败),并且在压缩时会失败,因为这些语句被放在一行中。
-
为了扩展@Derek 所说的,尾随逗号从 ES5 开始有效 - ES5 规范之前的古老浏览器(例如 IE7 及更低版本)将使用尾随逗号出错。不确定缺少分号是错误的意思 - ASI 是该语言的一个重要方面。但是有些东西,比如多行返回,可能会产生错误。
-
一定要使用 Lint/Hint,避免使用 eval() 和 Function(),小心使用诸如 function.name 之类的技巧...
-
@epascarello 我明白了。我希望现代编译器/混淆器在连接所有内容之前纠正丢失的分号,但我想你是对的。
-
“混淆代码前的先决条件是什么?” - (1)想出一个很好的混淆理由。我什么都想不出来。缩小,是的。为了混淆而混淆?不。
标签: javascript jquery html obfuscation deobfuscation