网站首页 > 技术教程 正文
JavaScript奇淫技巧:清理无效的垃圾代码
在编程过程中,难免会产生一些无效的、冗长的长码。
很常见的是:定义了某些变量,但未使用,或者是曾使用过,但在修改代码后不再使用。那么,它就成了无用的垃圾代码,而它占用着代码空间,使代码庞大、影响代码阅读。
在较大的工程中,往往有不少这种代码。
本文,演示一种方法,自动化地去除无效的变量。
例程:
添加图片注释,不超过 140 字(可选)
以上代码中,变量b是无用的。
通过编程,实现去除,完整代码如下:
?
添加图片注释,不超过 140 字(可选)
其原理是:将代码转化为AST(抽象语法树),从语法树中遍历变量定义,然后检测变量是否被引用或修改,如果变量既未引用、也未被修改过。则删除该变量。最后,再把AST重新生成为JS代码。
这段代码在NodeJS环境中使用,运行效果:
?
添加图片注释,不超过 140 字(可选)
从运行效果可以看到,删除了未使用的变量b,并重新生成了代码。
这个操作,可以精简、优化JS代码。
与这波操作相反的,有时,为了保护JS代码,防止代码被分析、复制、盗用;防止他人理解代码;或因小游戏过审等需要,而对JS代码进行混淆加密。
在JS代码混淆加密时,经常会有“僵尸代码植入操作”,会插入一些无用的变量和函数等,比如JShaman就具有这项功能。下面,再测试一下,用JShaman插入的JS代码,是否能用这种方式去除。
例程如下:
?
添加图片注释,不超过 140 字(可选)
在配置中,只选择“僵尸代码植入”。JShaman有很多JS加密选项,本文只测试是否能去除插入的JS代码,所以,只启用这一项:
?
添加图片注释,不超过 140 字(可选)
用JShaman混淆加密后,得到代码:
?
添加图片注释,不超过 140 字(可选)
代码中的红色标识处,都是随机插入的僵尸代码。
把这段代码,放到刚刚的程序中,并运行:
?
添加图片注释,不超过 140 字(可选)
从运行结果看,并未能去除被JShaman插入的僵尸代码,原因是因为僵尸变量也有引用和修改。
本文仅演示了无效变量的去除,同理,还可以用类似的方法去除无效的函数。
最后,附上本文使用的代码:
//自动去除无效变量
//Auther: JShaman.com w2sft
var parser = require("@babel/parser");
var traverse = require("@babel/traverse").default;
var generator = require("@babel/generator").default;
var jscode = `
function get_copyright() {
var _0x4d = 1 + 5;
var domain = "jshaman.com";
_0x4d = "apib";
var _0x05f;
var from_year = 2017;
_0x05f = 9;
var _0x;
var copyright = "(c)" + from_year + "-" + new Date().getFullYear() + "," + domain;
_0x = 8 + 2;
return copyright;
}
console.log(get_copyright());
`;
var ast = parser.parse(jscode);
var visitor = {
VariableDeclarator(path){
var binding = path.scope.getBinding(path.node.id.name);
//变量被修改过
if (!binding || binding.constantViolations.length > 0) {
return;
}
//变量没有被使用过
if (binding.referencePaths.length == 0) {
console.log(" 已删除变量:",path.node.id.name);
console.log();
path.remove();
}
},
}
traverse(ast, visitor);
console.log(generator(ast).code);
console.log();
- 上一篇: 暗黑4暗黑破坏神4登录时错误代码7怎么处理
- 下一篇: 一键清理垃圾脚本,自己制作,无需软件,简单快捷
猜你喜欢
- 2024-10-10 神操作!一次性清理出50G隐藏垃圾,再不怕手机内存不够用了
- 2024-10-10 相遇不易!4款免费又实用的软件,手机内存满了也舍不得删除
- 2024-10-10 Win7小优化技巧 - 系统清理注册表垃圾的操作方法
- 2024-10-10 批处理清理浏览器缓存文件及系统垃圾文件
- 2024-10-10 成都网站建设之空格代码清理 2021最新空格代码
- 2024-10-10 教你一招 感觉win10系统慢了 就试试电脑系统清理代码
- 2024-10-10 当开发同事辞职,接收到垃圾代码怎么办?
- 2024-10-10 普通人清理电脑垃圾VS程序员清理电脑垃圾,你是怎么清理的呢?
- 2024-10-10 暗区突围PC端进不去/闪退/掉线/错误代码的有效解决办法分享
- 2024-10-10 电脑实用小技巧:教你自制“清理系统垃圾”的小工具!
你 发表评论:
欢迎- 01-09单因素方差分析+作图
- 01-09描述性统计分析 之 均值分析
- 01-0986:重复性和再现性分析GRR(2)-GRR均值极差分析法和方差分析法
- 01-09SPC如何做方差分析,意义又在哪里?
- 01-09MedSPSS小课堂——多因素方差分析
- 01-09MedSPSS小课堂——双因素方差分析
- 01-09SPSS单因素方差分析的操作步骤及结果解读,陈老师SPSS数据分析
- 01-0914单因素方差分析:One-Way ANOVA
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)