分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

uglifyjs2全局混淆

发布时间:2023-09-06 02:00责任编辑:蔡小小关键词:js

    从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 ????}

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

uglifyjs2全局混淆

原文地址:https://www.cnblogs.com/Jackie-Snow/p/9198466.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved