博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uglifyjs2全局混淆
阅读量:7098 次
发布时间:2019-06-28

本文共 972 字,大约阅读时间需要 3 分钟。

    从git克隆uglifyjs2源码后,进入目录:

    npm link

    编译并安装uglifyjs2成功,就可以直接调用uglifyjs命令了。但是在进行全局混淆时出现了问题,虽然指定了文件topvar.json为全局变量的cache文件,还是出现:

    1)全局变量混淆后的名字与局部变量的混淆名冲突;

    2)不同全局变量的混淆名冲突。

    查阅文档并做了一些测试,无奈都未成功。最终翻阅代码并做如下改动:

    1)在scope.js文件中修改SymbolDef.prototype.mangle函数:

1             // 为了避免混淆时TopLevel中的变量名与局部作用域中的变量名冲突, 对于Toplevel的变量增加前后缀双下划线2             if (this.scope instanceof AST_Toplevel) {3                 console.log(this.name + "=>" + this.mangled_name);4                 this.mangled_name = "__" + this.mangled_name + "__";5             }

对于全局变量的混淆,添加双下划线前后缀,避免冲突。在这修改之后,在计算next_mangled_name时需要过滤掉已经使用过的全局符号。

    2)在函数next_mangled_name函数中增加如下处理:

 

1     while (true) {2         name = base54(++scope.cname);3         // 双下划线过滤4         if (in_use['__' + name + '__'] || !is_identifier(name) || member(name, options.reserved)) continue;5         if (!names[name]) break;6         holes.push(scope.cname);7     }

如此这般之后,全局变量混淆的问题才算是彻底解决。

转载于:https://www.cnblogs.com/Jackie-Snow/p/9198466.html

你可能感兴趣的文章
Android4.0蓝牙使能的详细解析
查看>>
Freemarker常用技巧(三)
查看>>
Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突) (转)
查看>>
使用反射生成并操作对象
查看>>
开源jabber(XMPP)架设内部即时通讯服务的解决方案
查看>>
行为统计学第二章知识总结(未完)
查看>>
关闭注册表编辑器,重新启动计算机后生效。这样资源管理器重启后就不会自动重启了。...
查看>>
Knockout应用开发指南(完整版) 目录索引
查看>>
A example that using JQuery clone
查看>>
随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比...
查看>>
Android 使用JSON格式与服务器交互 中文乱码问题解决
查看>>
_DataStructure_C_Impl:链串
查看>>
openvas
查看>>
SecureCRT同时向多个终端发送命令
查看>>
【IntelliJ】IntelliJ IDEA常用设置及快捷键以及自定义Live templates
查看>>
indexOf 和 lastIndexOf 的区别
查看>>
spring boot整合activemq消息中间件
查看>>
Spark:java api实现word count统计
查看>>
mqtt-jmeter
查看>>
PyTorch保存模型与加载模型+Finetune预训练模型使用
查看>>