首页 > 其他分享 >JS混淆工具简介(一)---UglifyJS

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

时间:2024-04-16 10:47:10浏览次数:24  
标签:bar 变量 作用域 JS --- foo 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();等

标签:bar,变量,作用域,JS,---,foo,UglifyJS
From: https://www.cnblogs.com/theon/p/18137507

相关文章

  • 数据库的基本使用-mysql
    https://blog.csdn.net/weixin_50964512/article/details/1246452121.showdatabases;//显示当前已有的数据库2.createdatabasetest2;//创建新的数据库3.usetest1;//使用test1数据库,接下来的操作基于该数据库4.exit;//退出sql//数据表增删改查select*......
  • CentOS 7.9编译安装Python-3.10.13
    目录查看CentOS版本、系统默认gcc版本、Python版本和pip版本部署Python-3.10.13测试将yum中的Python版本修改为系统原来的2.7.5版本查看CentOS版本、系统默认gcc版本、Python版本和pip版本cat/etc/redhat-releasegcc--versionpython-Vpip-V部署Python-3.10.13下载......
  • SAP-修改销售订单税额
    SAP-修改销售订单税额用户需要通过接口实现,修改行上的MWSI或MWST税额(两个不会同时存在),前台通过事务码VA02可以直接修改如图示字段。观察字段名称,需要修改字段为定价值(KOMV-KWERT),相关字段有条件金额或百分比(KOMV-KBETR),条件基值(KOMV-KAWRT)。通过BAPI_SALESORDER_CHANG......
  • Mybatis-Plus 使用IPage分页失效问题处理
    问题在mybatis-plus中使用IPage作为分页功能实现,请求发现并没有实现分页功能。部分代码##controller@PostMapping("/getCollege")@ApiOperation("查询学院信息")publicCommonResult<IPage<ZgdCollegeVo>>getCollege(@RequestBodyZgdCollegeBozgdColle......
  • 界面组件DevExpress WinForms v23.2 - 数据展示、UI模板功能全新升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此版......
  • httprunner 4.x学习 - 07环境变量.env
    前言在实际开发迭代过程中,一般都会经历以下几种环境:1.开发环境2.测试环境3.生产环境在不同环境中,通过 .env 文件来设置不同环境运行不同的数据库,如数据库、redis等这些。环境变量在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括:1.......
  • antd 的ProTable 的列加上ellipsis属性后,react-resizable会无法拖动列
    1、我尝试在列中加入ellipsis为true后,让内容超出后,用省略号表示。{title:displayName,dataIndex:propName,key:newPropName,width:widthIndex//,ellipsis:true}但是这引发了另外的问题。react-resizable配置的列可拖动无效了。额外的情况:obj.fixed='......
  • fastjson 1.2.24 反序列化导致任意命令执行漏洞复现
    前置知识今天复现了常见的fastjson反序列化漏洞,了解该漏洞需要一些前置的知识,这里总结一下:Fastjsonfastjson是一个Java的库,可以将Java对象转换为Json字符串,也可以将Json字符串转换为Java对象,Fastjson也可以操作一些Java中的对象。JNDIJNDI(JavaNamingandDirectoryInterf......
  • 前端开发框架的选择-Vue.js
    Vue.js秉持简约哲学,通过精炼的代码实现功能——它专注于为Web应用开发提供核心工具,而非让冗余特性成为负担。这种简约设计思路使得代码更加明晰,易于阅读和维护。长远看来,Vue.js的简约特性使得项目运作更为流畅。无论是小型网站还是大型单页应用,Vue.js都能轻松应对——它并非万金......
  • 洛谷题单指南-数学基础问题-P2660 zzc 种田
    原题链接:https://www.luogu.com.cn/problem/P2660题意解读:对一个长方形,切割出最少数量的正方形,计算所有正方形的边长。解题思路:长方形长、宽为x,y先判断x,y哪个长,哪个短长的作为l,短的作为s先切出s*s的正方形,一共可以切出l/s个,累加周长ans+=l/s*s*4在对剩下的s*......