uglifyjs2全局混淆
2024-10-20 05:49:26
从git克隆uglifyjs2源码后,进入目录:
npm link
编译并安装uglifyjs2成功,就可以直接调用uglifyjs命令了。但是在进行全局混淆时出现了问题,虽然指定了文件topvar.json为全局变量的cache文件,还是出现:
1)全局变量混淆后的名字与局部变量的混淆名冲突;
2)不同全局变量的混淆名冲突。
查阅文档并做了一些测试,无奈都未成功。最终翻阅代码并做如下改动:
1)在scope.js文件中修改SymbolDef.prototype.mangle函数:
// 为了避免混淆时TopLevel中的变量名与局部作用域中的变量名冲突, 对于Toplevel的变量增加前后缀双下划线
if (this.scope instanceof AST_Toplevel) {
console.log(this.name + "=>" + this.mangled_name);
this.mangled_name = "__" + this.mangled_name + "__";
}
对于全局变量的混淆,添加双下划线前后缀,避免冲突。在这修改之后,在计算next_mangled_name时需要过滤掉已经使用过的全局符号。
2)在函数next_mangled_name函数中增加如下处理:
while (true) {
name = base54(++scope.cname);
// 双下划线过滤
if (in_use['__' + name + '__'] || !is_identifier(name) || member(name, options.reserved)) continue;
if (!names[name]) break;
holes.push(scope.cname);
}
如此这般之后,全局变量混淆的问题才算是彻底解决。
最新文章
- vue 2.0
- C中的数组与指针问题
- django1.4日志模块配置及使用
- PHP不同域名cookie共享(单点登录实现原理)
- redis 多数据库
- SSIS ->;>; 生成时间格式
- 【Shell脚本学习10】Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等
- HDOJ2017字符串统计
- 【HDOJ 1286】找新朋友
- 阿里云pai项目使用说明
- Java中为什么long能自动转换成float类型
- Mac超快速搭建Nginx、PHP、PHPStorm、XDebug环境
- Linux环境变量具体内容介绍
- SpringBoot与数据访问
- [leetcode]96. Unique Binary Search Trees给定节点形成不同BST的个数
- Postgresql之VACUUM和VACUUM FULL对比
- 【Spring】20、使用TransactionSynchronizationManager在spring事务提交之后进行一些操作。
- Springboot 使用 RestTemplate
- SkylineGlobe6.5版本,在矿山、石油、天然气等能源行业的最新应用DEMO演示
- 查找mac下腾讯视频下载地址