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

关于Function JS加密加密(仅于问题分析)

我来分析这种JavaScript代码加密方式。

下面是实际代码(看上去是加密其实很容易被识别源内容)

Function("lc6a3mv#me$w5 $cn&$rxuj!txezr#"["\162\145\160\154\141\143\145"](/[356cm#\$w&xj!z]/g,"")["\x73\x70\x6C\x69\x74"]("")["\u0072\u0065\u0076\u0065\u0072\u0073\u0065"]()[String["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65"](106,111,105,110)](""))()(";)()}))(thgirypoc(gol_elosnoc;gol.elosnoc=gol_elosnoc rav;};niamod+\",\"+)(raeYlluFteg.)etaD wen(+\"-\"+raey_morf+\")c(\" nruter{)(noitcnuf=thgirypoc rav;7102=raey_morf rav;\"moc.namahsj\"=niamod rav{)( noitcnuf("["s51fpc7@lb^if$7t^0x"["\162\145\160\154\141\143\145"](/[0157fc@b\^\$x]/g,"")]("")["\u0072\u0065\u0076\u0065\u0072\u0073\u0065"]()["\x6A\x6F\x69\x6E"](""));

加密原理分析

这种加密方式的核心是使用Function构造函数来执行经过混淆的代码字符串。

基本结构

javascript

Function(obfuscated_code_string)()
  • 通过Function构造函数将字符串转换为可执行函数

  • 立即调用该函数执行解密后的代码

混淆技术分析

  1. 字符串混淆

    • 使用八进制:\162\145\160\154\141\143\145 → "replace"

    • 使用十六进制:\x73\x70\x6C\x69\x74 → "split"

    • 使用Unicode转义:\u0072\u0065\u0076\u0065\u0072\u0073\u0065 → "reverse"原始混淆字符串 → replace去除干扰字符 → split → reverse反转 → join组合

示例代码解密

第一个示例解密过程:

javascript

// 原始混淆字符串
"lc6a3mv#me$w5 $cn&$rxuj!txezr#"// 去除干扰字符 [356cm#\$w&xj!z]
.replace(/[356cm#\$w&xj!z]/g, "") 
// 得到: "a v e r s e"// 分割成数组
.split("") 
// ["a", " ", "v", " ", "e", " ", "r", " ", "s", " ", "e"]// 反转数组
.reverse()
// ["e", " ", "s", " ", "r", " ", "e", " ", "v", " ", "a"]// 组合成字符串
.join("") 
// "e s r e v a"

实际代码还原

从源代码示例中可以看到实际代码:

javascript

var domain = "moc.namahsj";
var from_year = 2017;
var copyright = function(){return "(c)"+from_year+"-"+ (new Date()).getFullYear()+","+domain;
};
var console_log = console.log;
console.log = console_log;
copyright();

特点总结

  1. 作用域保持:加密前后全局变量和作用域完全一致

  2. 直接运行:无需额外解密工具,浏览器可直接执行

  3. 轻度混淆:主要目的是防止简单阅读,不是高强度加密

  4. 可逆性:通过分析字符串处理流程可以还原原始代码

这种加密方式适合需要简单代码保护但又不想影响执行效率的场景。

http://www.dtcms.com/a/618149.html

相关文章:

  • mysql基础——视图
  • win系统做网站wordpress侧边文本轮播图片
  • 免费微商城平台官网一直在做竞价的网站是不是不需要做seo
  • 输出纹波实测:ASP3605在不同输入与负载条件下的稳定性表现
  • RAG向量索引-HNSW Hierarchical Navigable Small World 介绍
  • 沈阳做网站的企业重庆房产网站建设
  • 让老版 IntelliJ IDEA 2020.1.4 支持 JDK 17 启动 springboot3 项目
  • 网站开发逻辑商丘网站建设求职简历
  • [Linux网络——Lesson1.初识计算机网络]
  • 电子电气架构全解析
  • 5G技术:推动数字经济的下一个革命性浪潮
  • 5G与AI赋能智能制造:未来生产的双重驱动力
  • 从工业互联网到智慧城市:5G与物联网的跨界融合
  • 5G NR PBCH与MIB技术介绍
  • 怎么查询网站的点击量招商网站建设全包
  • TCN‑Transformer‑GRU(单输入‑单输出)在 MATLAB 中的实现思路与完整示例代码
  • 重庆市建设工程信息网站诚信分东莞海天网站建设
  • 【Linux】文件操作篇(二):实战理解硬链接与软链接
  • 在RK3568开发板嵌入式开发中,配置NFS服务是实现与Ubuntu虚拟机之间文件共享的常用方法
  • 使用mysql报Communications link failure异常解决
  • 【Linux驱动开发】Linux USB驱动架构详解
  • Linux服务器配置ssh免密登陆多台服务器、服务器别名配置
  • 百度推广青岛公司网站在线优化
  • java学习3-redis集成
  • 【Linux】深入理解进程(四)(进程地址空间)
  • 数据结构1.0 面试题
  • 网站定制哪家快高档网站设计公司
  • 信创产品认证机构有哪些?信创检测报告和信创产品评估证书如何办理?
  • 官方网站建设计划书文山做网站yunling88
  • 数据分析笔记12:函数