JS混淆基本类型和原理

常见JS混淆技术解析

JavaScript(JS)混淆是一种技术手段,用于保护源代码不被轻易理解或篡改。在Web开发中,混淆可以增加代码的安全性,但也给逆向工程带来了挑战。以下是几种常见的JS混淆技术及其解析方法。

1. eval混淆

技术描述
eval函数可以执行其参数作为JS代码。这使得开发者可以将代码作为字符串传递给eval,从而实现混淆。

混淆示例

eval("var a = 'Hello, ' + 'World!';");

解析方法

  • 识别eval函数调用。
  • 尝试提取并分析eval内的代码字符串。
  • 考虑使用工具来自动解析和重构eval内的代码。
2. AA混淆

技术描述
AA混淆通常指使用ASCII字符的特定模式进行混淆,如将变量名替换为ASCII码。

混淆示例

var _0x4c41 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var a = _0x4c41[2] + 'BC';

解析方法

  • 识别ASCII模式的混淆。
  • 将混淆后的变量名转换回可读的字符。
  • 手动或使用工具将代码重构为原始形式。
3. OO混淆(面向对象混淆)

技术描述
面向对象混淆通过封装和继承的方式隐藏代码逻辑,使得代码结构复杂难以理解。

混淆示例

var _0x2b4f = function() {};
_0x2b4f.prototype = {
  sayHello: function() {
    console.log('Hello');
  }
};
var obj = new _0x2b4f();
obj.sayHello();

解析方法

  • 理解面向对象的封装和继承机制。
  • 分析原型链和对象之间的关系。
  • 重构代码以清晰展示类和对象的交互。
4. OB混淆

技术描述
OB混淆(One-Time-Pad)是一种加密技术,通过将代码与随机数结合,使得每次混淆后的代码都不同。

混淆示例

var _0x1f4b = ['\x68\x65\x6c\x6c\x6f'];
for (var _0x45b3 = 0; _0x45b3 < _0x1f4b.length; _0x45b3++) {
  eval(_0x1f4b[_0x45b3] + ' = ' + _0x1f4b[_0x45b3]);
}

解析方法

  • 识别OB混淆模式,通常结合eval使用。
  • 尝试找到解密的密钥或模式。
  • 使用逆向工程技巧手动或自动解密混淆代码。
5. Fuckjs混淆

技术描述
Fuckjs混淆是一种激进的混淆技术,通过使用不常见的字符和编码方式,使得代码几乎不可读。

混淆示例

var 𝔒𝔦𝔡𝔢 = '\ud83d\udc4d';
eval("console." + 𝔒𝔦𝔡𝔢 + "('Hello, World!')");

解析方法

  • 使用支持Unicode和特殊字符的编辑器查看代码。
  • 识别和替换不常见的字符和编码。
  • 清理和格式化代码以提高可读性。

结语

混淆技术为JS代码提供了一定程度的保护,但同时也给代码的维护和逆向工程带来了挑战。了解和掌握这些混淆技术的原理和解析方法,可以帮助开发者更好地保护或理解JS代码。然而,需要注意的是,混淆并不是万无一失的安全措施,它更多的是增加了攻击者理解代码的难度。

在进行逆向工程时,应始终遵守法律法规,尊重知识产权,不要用于非法目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/779487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖--sky-take-out(五)前端

大部分笔记都是写在语雀的&#xff0c;这是一次性从本人语雀复制过来的&#xff0c;可能结构有些错乱 基础创建 环境要求 node.js npm Vue CLI 创建前端工程 使用vue ui命令创建 项目结构 启动项目 打开命令行窗口 快捷键ctrlj 或者 运行 输入&#xff1a;npm run ser…

基于单片机的多功能电子时钟的设计

摘要&#xff1a;提出了一种基于单片机的多功能电子时钟的设计方法&#xff0c;以 AT89C52单片机作为系统的主控芯片&#xff0c;采用DS1302作为时钟控制芯片&#xff0c;实现日期时钟显示并且提供精准定时的功能。此外&#xff0c;还可经由DHT22所构成的温湿度传感电路&#x…

Chair Footrest Protective Cover

Chair Footrest Protective Cover 万能通用型椅子脚垫保护套凳子耐磨硅胶加厚垫桌椅脚垫防滑静音套

【学术会议征稿】2024年工业自动化与机器人国际学术会议(IAR 2024)

2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09; 2024 International Conference on Industrial Automation and Robotics 2024年工业自动化与机器人国际学术会议&#xff08;IAR 2024&#xff09;将于2024年10月18-20日在新加坡隆重召开。会议将围绕…

ConcurrentHashMap是如何保证线程安全的-put方法简要分析

简介 ConcurrentHashMap 是 Java 中并发编程中常用的线程安全的哈希表&#xff08;HashMap&#xff09;实现。它具有以下几个显著的特点和优点&#xff0c;适合在特定的并发场景中使用&#xff1a; 线程安全性&#xff1a; ConcurrentHashMap 提供了并发访问的线程安全保证&am…

Keras实战之图像分类识别

文章目录 整体流程数据加载与预处理搭建网络模型优化网络模型学习率Drop-out操作权重初始化方法对比正则化加载模型进行测试 实战&#xff1a;利用Keras框架搭建神经网络模型实现基本图像分类识别&#xff0c;使用自己的数据集进行训练测试。 问&#xff1a;为什么选择Keras&am…

RedHat9 | Zabbix-Server监控服务部署

系统版本以及软件版本 使用的系统版本&#xff1a; Red Hat Enterprise Linux release 9.2 软件版本&#xff1a; zabbix-release-7.0-3.el9.noarchzabbix-web-7.0.0-release1.el9.noarchzabbix-web-mysql-7.0.0-release1.el9.noarchzabbix-web-deps-7.0.0-release1.el9.noar…

基于Android Studio订餐管理项目

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 能够实现登录&#xff0c;注册、首页、订餐、购物车&#xff0c;我的。 用户注册后&#xff0c;登陆客户端即可完成订餐、浏览菜谱等功能&#xff0c;点餐&#xff0c;加入购物车&#xff0c;结算&#xff0c;以及删减…

【电商纯干货分享】干货速看!电商数据集数据API接口数据分析大全!

数据分析——深入探索中小企业数字化转型&#xff0c;专注提供各行业数据分析干货、分析技巧、工具推荐以及各类超实用分析模板&#xff0c;为钻研于数据分析的朋友们加油充电。 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09…

Unity编辑器扩展之Inspector面板扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Inspector面板扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff…

Java--Super

1.super调用父类的构造方法&#xff0c;必须在构造方法的第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造该方法 和this差别 1.代表的对象不同 this&#xff08;&#xff09;&#xff1a;代指本身调用者这个对象 super&#xff08;&a…

Docker-文件分层与数据卷挂载详解(附案例)

文章目录 文件分层数据卷挂载的含义数据卷挂载实践数据卷挂载案例数据卷挂载方式数据卷常用命令容器间数据共享 更多相关内容可查看 文件分层 例&#xff1a;拉取mysql5.7的镜像&#xff0c;在继续拉取mysql5.8的镜像&#xff0c;会出现一部分文件已存在的现象 这种分层技术 是…

同花顺问财选股,使用自然语言的形式调接口选股

http形式的接口调用问财接口&#xff1a;https://stockapi.com.cn/v1/base/xuangu?strategy创业板&#xff0c;竞价涨幅大于1&#xff0c;竞价量比大于1 代码中调用该接口调试数据。

cmake编译源码教程(一)

1、介绍 本次博客介绍使用cmake编译平面点云分割的源代码,其对室内点云以及TLS点云中平面结构进行分割,分割效果如下: 2、编译过程 2.1 源代码下载 首先,下载源代码,如下所示,在该文件夹下新建一个build文件夹,用于后续生成sln工程。 同时,由于该库依赖open…

什么是 DDoS 攻击及如何防护DDOS攻击

自进入互联网时代&#xff0c;网络安全问题就一直困扰着用户&#xff0c;尤其是DDOS攻击&#xff0c;一直威胁着用户的业务安全。而高防IP被广泛用于增强网络防护能力。今天我们就来了解下关于DDOS攻击&#xff0c;以及可以防护DDOS攻击的高防IP该如何正确选择使用。 一、什么是…

springboot云南特色民宿预约系统-计算机毕业设计源码81574

目 录 第 1 章 引 言 1.1 选题背景 1.2 选题目的 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

文件读写操作之c语言、c++、windows、MFC、Qt

目录 一、前言 二、c语言文件读写 1.写文件 2.读文件 三、c文件读写 1.写文件 2.读文件 四、windows api文件读写 1.写文件 2.读文件 五、MFC文件读写 1.写文件 2.读文件 六、Qt文件读写 1.写文件 2.读文件 七、总结 一、前言 我们在学习过程中&#xff0c…

idea使用技巧---超实用的mybatisX插件

一、使用原因 传统创建mybatis项目之后&#xff0c;在mapper接口和xml映射文件之间手动切换非常麻烦&#xff1a;不仅需要记住文件的所在位置&#xff0c;而且每次在mapper当中添加一个新的接口&#xff0c;都需要单独手动点开xml再编写sql&#xff1b; eg&#xff1a;在item…

前端面试题22(js中sort常见的用法)

JavaScript 的 sort() 方法是数组的一个非常强大的功能&#xff0c;用于对数组的元素进行排序。这个方法直接修改原数组&#xff0c;并返回排序后的数组。sort() 的默认行为是将数组元素转换为字符串&#xff0c;然后按照字符串的 Unicode 字典顺序进行排序。这意味着如果你试图…

优化路由,优化请求url

1、使用父子关系调整下使其更加整洁 2、比如说我修改了下url,那所有的页面都要更改 优化&#xff1a;把这个url抽出来&#xff0c;新建一个Api文件夹用于存放所有接口的url&#xff0c;在业务里只需要关注业务就可以 使用时 导包 发请求 如果想要更改路径&#xff0c;在这里…