JS加密/解密之webpack打包代码逆向

在这里插入图片描述

Webpack 是一个强大的打包工具,能够将多个文件打包成一个或多个最终的文件。然而,将已经经过打包的代码还原回原始源代码并不是一件直接的事情,因为 webpack 打包的过程通常会对代码进行压缩、混淆和优化,丢失了部分变量名和代码结构的信息。因此,完全还原打包前的源码可能并不现实。但是,可以通过一些工具和技术部分还原源码的结构和逻辑。以下是一篇论文的框架,以解释如何尝试还原被 webpack 打包过的代码:

1. 引言

在前端开发中,Webpack 是一个常用的打包工具,能够将多个文件打包成最终可部署的代码。然而,由于 webpack 的优化、压缩和混淆过程,导致打包后的代码难以完全还原为原始源码。本文旨在探讨如何尝试将 webpack 打包后的代码部分还原回原始源码,以及相关工具和技术的应用。

2. Webpack 打包原理

Webpack 的打包过程涉及模块解析、代码转换、依赖图生成和代码打包等多个环节。其中,代码转换阶段会将 ES6+ 语法转换为兼容性更好的代码,并进行压缩和优化处理,从而提高应用的性能和加载速度。

3. 代码还原尝试

尽管完全还原 webpack 打包后的代码是困难的,但通过以下工具和技术可以部分还原源码的结构和逻辑:

  • Source Map:Webpack 提供了 Source Map 功能,可以将打包后的代码映射回原始源文件,帮助开发者在浏览器中调试时定位问题,这在一定程度上帮助还原源码结构。
  • 代码反混淆工具:一些代码反混淆工具可以帮助还原被混淆过的变量名和函数名,从而提高还原源码的准确性。
  • 人工逆向: 由人工分析代码逻辑,逐步解密。

4. 案例分析

考虑以下被 webpack 打包过的简单代码:

// 打包后的代码
!function (e) {var t = {};function n(r) {if (t[r]) return t[r].exports;var o = t[r] = {i: r, l: !1, exports: {}};return e[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports}n.m = e, n.c = t, n.d = function (e, t, r) {n.o(e, t) || Object.defineProperty(e, t, {enumerable: !0, get: r})}, n.r = function (e) {"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})}, n.t = function (e, t) {if (1 & t && (e = n(e)), 8 & t) return e;if (4 & t && "object" == typeof e && e && e.__esModule) return e;var r = Object.create(null);if (n.r(r), Object.defineProperty(r, "default", {enumerable: !0,value: e}), 2 & t && "string" != typeof e) for (var o in e) n.d(r, o, function (t) {return e[t]}.bind(null, o));return r}, n.n = function (e) {var t = e && e.__esModule ? function () {return e.default} : function () {return e};return n.d(t, "a", t), t}, n.o = function (e, t) {return Object.prototype.hasOwnProperty.call(e, t)}, n.p = "", n(n.s = 0)
}([function (e, t) {console.log("Hello, World!")
}]);

通过 Source Map 和代码反混淆工具,可以部分还原打包前的代码结构:

// 还原后的源码
console.log("Hello, World!")

5. 结论

尽管 webpack 打包后的代码很难完全还原为原始源码,但通过利用 Source Map 和代码反混淆工具(下篇我们介绍如何用source map逆向JS代码),可以在一定程度上部分还原代码结构和逻辑。这些工具为开发者提供了一定的便利,帮助他们更好地理解和调试已经打包的代码。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gralloc ION DMABUF in Camera Display

目录 Background knowledge Introduction ia pa va and memory addressing Memory Addressing Page Frame Management Memory area management DMA IOVA and IOMMU Introduce DMABUF What is DMABUF DMABUF 关键概念 DMABUF APIS –The Exporter DMABUF APIS –The…

Flutter - 波浪动画和lottie动画的使用

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新,请前往github查看最新代码 波浪动画三方库wave lottie动画 Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。具有丰富的动画效果和交互功能。 # 波浪动画 https://pub-web…

高并发下的服务容错

在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会 出现网络延迟&#xf…

线性回归模型进行特征重要性分析

目的 线性回归是很常用的模型;在局部可解释性上也经常用到。 数据归一化 归一化通常是为了确保不同特征之间的数值范围差异不会对线性模型的训练产生过大的影响。在某些情况下,特征归一化可以提高模型的性能,但并不是所有情况下都需要进行归一…

PG学习笔记(PostgreSQL)

PG学习笔记(PostgreSQL) 1、PG特点 项目极限值最大单个数据库大小不限最大最大数据单表大小32 TB单条记录最大1.6TB单字段最大允许1GB单表允许最大记录数不限单表最大字段数250~1600(取决于字段类型)单表最大索引数不限 2、PG安…

go-gin-api 本地部署调试问题总结

1.告警邮箱设置 保存后会自动将配置信息保存在fat_configs.toml 文件中; 可能出现问题:报错 550和 anth 问题,说明你的邮箱配置有问题(密码或者授权码); 2.生成数据表curd 执行结果报错 exec: “gormge…

Win10 系统中用户环境变量和系统环境变量是什么作用和区别?

环境: Win10专业版 问题描述: Win10 系统中用户环境变量和系统环境变量是什么作用和区别? 解答: 在Windows 10系统中,用户环境变量和系统环境变量是两个不同的环境变量,它们具有不同的作用和区别 1.用…

UE4中无法保存项目问题

系列文章目录 文章目录 系列文章目录前言一、解决方法 前言 取消:停止保存所有资产并返回编辑器。 重试:尝试再次保存资产。 继续:仅跳过保存该资产。 当我点击继续时,关闭项目,然后重新打开项目,发现之前…

geecg-uniapp 同源策略 数据请求 获取后台数据 进行页面渲染 ui库安装 冲突解决(3)

一,同源策略 (1)首先找到env 要是没有env 需要创建一个替换成后端接口 (2)因为他封装了 先找到 http 请求位置一级一级找 然后进行接口修改 (3)appUpdata 修改接口 运行即可 &#x…

idea中父工程Project创建

1.file-->new-->Project 2.选择maven包和JavaSDK 3.填写项目名,选择文件目录,项目包等 4.配置maven tip:约定>配置>编码 5.设置项目编码 6.注解生效激活,便于项目中使用注解 7.Java编译版本选择8 8.File Type 过滤&a…

【C++STL基础入门】list基本使用

文章目录 前言一、list简介1.1 list是什么1.2 list的头文件 二、list2.1 定义对象2.2 list构造函数2.3 list的属性函数 总结 前言 STL(Standard Template Library)是C标准库的一个重要组成部分,提供了一套丰富的数据结构和算法,可…

对CU50的修改(未使用)

目的是把CU50中的选择配置拿出来,再把最后BOM的结果拿出来。2023.10.13 一、CU50里面2个标准函数有修改: ----------LCUKOF01----函数----------------CALL FUNCTION CU01_DISPLAY_BOMEXPORTINGmasterdata rcuko-ukompRESULT …

LoRa技术未来发展前景:物联网和边缘计算的引领者

随着物联网和边缘计算的快速发展,低功耗广域网(LoRa)技术在连接远距离设备、实现长距离通信和满足低功耗需求方面崭露头角。本文将分析LoRa技术在未来的发展前景,尤其是在物联网和边缘计算领域的潜在影响。 LoRa技术的核心优势 1…

python:使用卷积神经网络(CNN)进行回归预测

作者:CSDN @ _养乐多_ 本文详细记录了从Excel或者csv中读取用于训练卷积神经网络(CNN)模型的数据,包括多个自变量和1个因变量数据,以供卷积神经网络模型的训练。随后,我们将测试数据集应用于该CNN模型,进行回归预测和分析。 该代码进一步修改可用于遥感影像回归模型. …

Android位置服务和应用权限

Github:https://github.com/MADMAX110/Odometer 一、使用位置服务 之前的Odometer应用是显示一个随机数,现在要使用Android的位置服务返回走过的距离。 修改getDiatance方法使其返回走过的距离,为此要用Android的位置服务。这些服务允许你得到用户的当…

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库, python3 -m pip install pymilvus Connect from pymilvus import connections c…

12.SpringBoot之RestTemplate的使用

SpringBoot之RestTemplate的使用 初识RestTemplate RestTemplate是Spring框架提供用于调用Rest接口的一个应用,它简化了与http服务通信方式。RestTemplate统一Restfull调用的标准,封装HTTP链接,只要需提供URL及返回值类型即可完成调用。相比…

工业互联网系列1 - 智能制造中有哪些数据在传输

工业互联网以网络为基础,需要传输的数据种类多种多样,这些数据对于实时监控、生产优化、设备维护和决策支持等方面都至关重要。 以下是一些常见智能制造业中需要传输的数据类型: 传感器数据:制造设备上安装的传感器(如…

原理:用UE5制作一个2D游戏

选中资产图片右键--Sprite Actions--Apply Paper2D Texture Settings 制作场景 把它丢到场景里,并把坐标归零 创建图块集tileset 打开新建的tile set,根据最小图块设置最小尺寸单元 选择需要的图块单元,add box 对新建的tile set右键创建til…

简单实现接口自动化测试(基于python+unittest)

简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Python自带的Unittest框架调用,期望各位可以通过本文对接口自动化测试有一个大致的了解。 引言 为什么要…