首页 > 其他分享 >JS加密/解密之webpack打包代码逆向

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

时间:2023-10-13 19:31:35浏览次数:32  
标签:function return 代码 解密 JS webpack 源码 还原 打包

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

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代码),可以在一定程度上部分还原代码结构和逻辑。这些工具为开发者提供了一定的便利,帮助他们更好地理解和调试已经打包的代码。

标签:function,return,代码,解密,JS,webpack,源码,还原,打包
From: https://blog.51cto.com/u_15785573/7850643

相关文章

  • js 下载csv
    exportToExcel(){varfileName="最新质量等级成本";constcsv=this.convertToCSV(this.datas);//将数据转换为CSV格式constblob=newBlob([csv],{type:'text/csv;charset=utf-8;'});//创建Blob对象constur......
  • Python JSON 库对 UTF8 字符的处理方式分析
    默认情况在使用json模块的json.dump时,默认会将非ASCII字符(中文字符等)进行Unicode转义,保证最终文件只有ASCII字符。例如下述代码:importjsonwithopen("text.json","w")asf:data={'1':111,'2':"你好",'3':"Hello",�......
  • 解密Nmon的强功能
    这个系统基准测试工具只需要使用一条命令就能得到大量重要的性能数据。使用Nmon可以很轻松的监控系统的CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源和IBMPower系统的微分区的信息。Nmon安装Nmon默认是存在于Ubuntu的仓库中的。你可以通过下面的命令安装Nm......
  • json转excle代码
    一、需要安装pandas二、我的json文件内容[{"name":"John","age":28,"city":"NewYork"},{"name":"Alice","age":24,"city":"SanFrancisco"},{"name":"Bob......
  • 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统
    序:这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人,基本都绕不开3D机房。包括前面也讲过这样的案例《使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细介绍(抽象版一)》 《 使用webgl(three.js)创建科技版3D机房,3D机房微模块详细介绍(升级版三)——......
  • js-base64加密解密
    下载安装npmi-Sjs-base64加密使用:Base64.encode('我是一段需要处理的字符')。解密使用:Base64.decode('5oiR5piv5LiA5q616ZyA6KaB5aSE55CG55qE5a2X56ym')使用引用import{Base64}from'js-base64'加密Base64.encode('我是一段需要处理的字符')解密Base64.dec......
  • 前端 - 使用json-server搭建单机mock平台
    使用json-server搭建单机mock平台 简介json-server是一个Node模块,可以指定一个json文件作为数据源,运行Express服务器。可以用来在本地快速搭建一个RESTAPI风格的后端服务,模拟服务端接口数据。官网地址:json-server-npm(npmjs.com)Github地址:GitHub-typicode/json-se......
  • 几何计算-基于Turf.js实现多边形的拆分及合并
    几何计算-基于Turf.js实现多边形的拆分及合并阿飞​红星美凯龙3D前端开发工程师​关注他 10人赞同了该文章❝JSAPIGL近期为支持物流行业实现了几何图形编辑器,用户可通过编辑器接口进行点、线、面、圆的绘制和编辑。在物流行业中常见的使用场景......
  • js_下来菜单自动补全
    <scripttype="text/javascript">   //需要添加的数据内容,可以通过ajax请求获取   //定义加载部品番号的函数   functionloadcities(){       varurl="rawedge.aspx?action=get_matnrlist";       $.get(url,function(data){    ......
  • leaflet使用heatmap.js出现heatmap.js:527 Uncaught TypeError: Cannot assign to rea
    一、问题背景问题是这样发生的,因为项目中需要实现热力图的功能,所以使用了第三方的库heatmap.js。但是在一些浏览器中使用它时,会出现这个错误:>UncaughtTypeError:Cannotassigntoreadonlyproperty'data'ofobject'#<ImageData>'出现问题的原因是因为img.data=im......