当前位置: 首页 > news >正文

JS混淆加密:Eval的未公开用法

JavaScript奇技淫巧:Eval的未公开用法

作者:http://JShaman.com w2sft,转载请保留此信息

很多人都知道,Eval是用来执行JS代码的,可以执行运算、可以输出结果。

但它还有一种未公开的用途,想必很少有人用过。

例:

var a = eval(['g', 'o', 'l', '.', 'e', 'l', 'o', 's', 'n', 'o', 'c'].reverse().join(""));
var b = ['m', 'o', 'c', '.', 'n', 'a', 'm', 'a', 'h', 's', 'j'].reverse().join("");
a(b);

这段JS代码,如果单看语法,是否能知道a(b)调用会输出什么?答案是很难想到的,它的输出如下:

 

能有这样的输出,依靠的便是eval的未公开用法:可以将字符串转为语法关键字。

上面的eval语句,简化后等于:

eval("console.log")

用reverse、join是为了隐藏console.log明文。

这个方法用于JS代码加密,效果很不错。

因为对JS代码混淆加密时,语法关键字是很难隐藏的,就如console.log,一般情况下可能变化为:console[“log”],或者console[“\x6c\x6f\x67”],log字符可以变化,但console作为语法关键字,是不可变的,这就容易被识别。

而eval的这种未公开用法,恰好可以解决这一问题。可以隐藏很多语法关键字。

 

http://www.lryc.cn/news/25881.html

相关文章:

  • π型滤波器 计算_π型滤波电路
  • 大数据常见术语
  • 带你了解“函数递归”
  • 网络资源面经2
  • 4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生。
  • K8S搭建NACOS集群踩坑问题
  • 怎么避免计算机SCI论文的重复率过高? - 易智编译EaseEditing
  • uni-app路由拦截
  • 如何使用固态继电器实现更高可靠性的隔离和更小的解决方案尺寸
  • 【YOLOv8/YOLOv7/YOLOv5系列算法改进NO.56】引入Contextual Transformer模块(sci期刊创新点之一)
  • 深圳大学计软《面向对象的程序设计》实验3 指针2
  • 【基于机器学习的推荐系统项目实战-2】项目介绍与技术选型
  • 对称锥规划:锥与对称锥
  • 4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取
  • 算法拾遗二十五之暴力递归到动态规划五
  • Linux进程的创建结束类系统调用总结
  • Git分支的合并策略有哪些?Merge和Rebase有什么区别?关于Merge和Rebase的使用建议
  • 2022-2-23作业
  • 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
  • “高退货率”标签引热议,亚马逊跨境电商是好是坏?
  • Pinia2
  • 服务器配置 | 在Windows本地打开服务器端Tensorboard结果
  • 13 nuxt3学习(新建页面 内置组件 assets 路由)
  • Linus命令记录(持续编辑版)
  • 玩转ThreadLocal
  • 亚马逊二审来袭,跨境电商传统验证算法真的靠谱吗?
  • 微信小程序|基于小程序+云开发制作一个租房小程序
  • 2.4 群辉驱动:多网口,系统网络只能识别两个网口 解决教程
  • Android正确使用资源res文件
  • 5分钟搭建第一个k8s集群