逆向案例二十六——webpack自执行函数是完整的,但我们只需要加载器,某职业技术学校登陆密码逆向

网址:统一身份认证平台

找到登陆包,搜索找到加密位置。

找到加密位置,打上断点

 

分析,E就是加密结果

 

进入n.i函数,就是t.i,看一下这个函数,传一个值,然后不变的返回,所以没什么意义

因此直接看u.c,很明显的webpack,找到前面定义u的位置,打上断点,释放其他断点,然后刷新页面。

进入n,发现它是一个完整的自执行函数 。总共有7万多行,我们只复制加载器,导出加载器,删除初始化。改成字典格式。

 

补充细枝末节,接下来就是补充函数模块。

缺少45模块,回到初始n(45) ,找到函数复制。可以发现,这是在子文件中

 

整体结果展示。

完整代码:

var yangxin;
window=global;
!function(e) {
    function t(n) {
        console.log(n)
        if (r[n])
            return r[n].exports;
        var o = r[n] = {
            i: n,
            l: !1,
            exports: {}
        };
        return e[n].call(o.exports, o, o.exports, t),
        o.l = !0,
        o.exports
    }
    yangxin=t
    var n = window.webpackJsonp;
    window.webpackJsonp = function(r, i, a) {
        for (var c, u, l, s = 0, f = []; s < r.length; s++)
            u = r[s],
            o[u] && f.push(o[u][0]),
            o[u] = 0;
        for (c in i)
            Object.prototype.hasOwnProperty.call(i, c) && (e[c] = i[c]);
        for (n && n(r, i, a); f.length; )
            f.shift()();
        if (a)
            for (s = 0; s < a.length; s++)
                l = t(t.s = a[s]);
        return l
    }
    ;
    var r = {}
      , o = {
        1: 0
    };
    t.e = function(e) {
        function n() {
            c.onerror = c.onload = null,
            clearTimeout(u);
            var t = o[e];
            0 !== t && (t && t[1](new Error("Loading chunk " + e + " failed.")),
            o[e] = void 0)
        }
        var r = o[e];
        if (0 === r)
            return new Promise(function(e) {
                e()
            }
            );
        if (r)
            return r[2];
        var i = new Promise(function(t, n) {
            r = o[e] = [t, n]
        }
        );
        r[2] = i;
        var a = document.getElementsByTagName("head")[0]
          , c = document.createElement("script");
        c.type = "text/javascript",
        c.charset = "utf-8",
        c.async = !0,
        c.timeout = 12e4,
        t.nc && c.setAttribute("nonce", t.nc),
        c.src = t.p + "" + e + "." + {
            0: "9cb4f940d5df451f543d"
        }[e] + ".js";
        var u = setTimeout(n, 12e4);
        return c.onerror = c.onload = n,
        a
### 实现 JavaScript 逆向工程与 Webpack 自定义加载器Webpack 中创建自定义加载器可以极大地扩展构建工具的功能。通过编写特定于项目的加载逻辑,能够处理各种资源转换需求。 #### 创建基础加载器结构 为了开发一个简单的自定义加载器,首先需要安装 `loader-utils` 工具包: ```bash npm install --save-dev loader-utils ``` 接着,在项目目录下新建一个名为 `myLoader.js` 的文件来定义加载器行为[^1]: ```javascript // myLoader.js const loaderUtils = require('loader-utils'); module.exports = function(source) { this.cacheable && this.cacheable(); const options = loaderUtils.getOptions(this); // 对源码执行某些操作... let result = source.replace(/hello/g, 'world'); return result; }; ``` 此代码片段展示了如何接收输入并对其进行简单替换处理。实际应用中可以根据具体需求调整内部逻辑[^2]。 #### 配置 Webpack 使用新加载器 编辑 `webpack.config.js` 文件以引入刚刚创建的加载器: ```javascript // webpack.config.js module.exports = { module: { rules: [ { test: /\.js$/, use: [{ loader: path.resolve(__dirname, './loaders/myLoader'), options: { /* 加载选项 */ } }] }, ] } } ``` 上述配置使得所有 `.js` 文件都会经过 `myLoader` 处理[^3]。 对于更复杂的场景比如反编译或分析已有的 JS 文件,则可能涉及到 AST (抽象语法树) 解析库如 Babel 或者 Esprima 来帮助解析和修改代码结构[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值