JS混淆工具简介(一)---UglifyJS

  UglifyJS是基于 NodeJS 的Javascript语法解析/压缩/格式化工具,它支持任何CommonJS模块系统的Javascript平台。

  UglifyJS通过解析重新生成JS代码的语法树。该工具缩短变量名的方法:通过分析代码并生成新的变量名称,依赖于作用域,这些名称通常被简化为单一字符,并能足够智能的处理全局变量,或者eval()调用及with{}块。换句话说,如果在某个作用域内使用了eval()或with{},那么该作用域的所有变量及其父作用域的变量都不会被重新命名,并且所有指向这类变量的引用也不会被改变。

  此外,UglifyJS构造一些规则做混淆,例如:

  1. foo["bar"] ==> foo.bar
  2. 删除块标记{}
  3. 合并变量声明: var a = 10; var b = 20; ==> var a=10,b=20;
  4. 计算简单的常量表达式:1 + 2 * 3 ==> 7
  5. 连续的语句块会被合并为一个序列
  6. IF语句的优化:if (foo) bar(); else baz(); ==> foo?bar():baz();等
posted @ 2024-04-16 10:34  向日葵*1  阅读(975)  评论(0)    收藏  举报