首页 > 其他分享 >JS逆向之webpack 通用扣取思路

JS逆向之webpack 通用扣取思路

时间:2022-12-07 12:22:08浏览次数:70  
标签:function exports return JS webpack diaoyong var loaded 扣取

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!

标题

环境

  • win10
  • chrome106

目标站:aHR0cHM6Ly93d3cuZ205OS5jb20v
加密参数 password: K6YEmQrNy%2FQgdnacXhdIZ1upCj4UU562IW89oOZquLkZ%2F16JDNyMqEU7pGVemvQzjfAlOzh7nSOLPkJp3kxbTm8XtWrHp9K%2BmMClOmmhkbdjAyax5xLBWC6PJiD6o8H

随便输入一些信息,触发登录,抓包找到接口
在这里插入图片描述
全局搜索password,没有找到明显的有用信息,使用xhr堆栈随便找个疑似位置打个断点跟进去在这里插入图片描述
明显分析出a.encode就是加密方法
,查看结构可以看出是webpack结构在这里插入图片描述

1.定位加载模块的方法(加载器)

webpack必有一个加载模块的方法:call或apply,找到加载器先抠出来
在这里插入图片描述

function e(s) {
    if (i[s])
        return i[s].exports;
    var n = i[s] = {
        exports: {},
        id: s,
        loaded: !1
    };
    return t[s].call(n.exports, n, n.exports, e),
}

2.构造成自执行方法

在控制台调试一下缺什么补什么

!function(t) {
    function e(s) {
    	var i = {};
        if (i[s])
            return i[s].exports;
        var n = i[s] = {
            exports: {},
            id: s,
            loaded: !1
        };
        return t[s].call(n.exports, n, n.exports, e),
    }
}()

3.定位并扣除调用的加密方法

在a.encode处下断点,跟进去找到最终的加密方法
分析得知jsencrypt.encrypt就是最终的加密方法
在这里插入图片描述
将jsencrypt.encrypt的方法整段扣出来,然后作为参数填入自执行加载器中,然后在将调用jsencrypt.encrypt的方法也抠出来
在这里插入图片描述

代码太长就不贴了,最终的格式就是下面的样子,

!(function(t) {
    var i = {};
    function e(s) {
        if (i[s]) return i[s].exports;
        var n = i[s] = {
            exports: {},
            id: s,
            loaded: !1
        };
        return t[s].call(n.exports, n, n.exports, e), n.loaded = !0, n.exports
    }
    _e = e;
})({
    encrypt: function(t, e, i) {},
    diaoyong: function(t, e, i) {}
});

4.导出加密方法

var _e;
!(function(t) {
    var i = {};
    function e(s) {
        if (i[s]) return i[s].exports;
        var n = i[s] = {
            exports: {},
            id: s,
            loaded: !1
        };
        return t[s].call(n.exports, n, n.exports, e), n.loaded = !0, n.exports
    }
    _e = e;
})({
	encrypt: function(t, e, i) {},
    diaoyong: function(t, e, i) {}
});

5.编写自定义方法 按照流程加密

function getkey(pass, time) {
    var diaoyong= _e("diaoyong");
    //这儿需要new一下调用方法,不然获取不到方法属性
    var new_diaoyong = (new diaoyong);
    return new_diaoyong.encode(pass, time)
}

效果

在这里插入图片描述

资源下载

https://download.csdn.net/download/qq_38154948/87253109


本文仅供学习交流使用,如侵立删!

标签:function,exports,return,JS,webpack,diaoyong,var,loaded,扣取
From: https://www.cnblogs.com/c1033383881/p/16962734.html

相关文章

  • Jvm上如何运行其他语言?JSR223规范最详细讲解
    一在Java的平台里,其实是可以执行其他的语言的。包括且不仅限于jvm发展出来的语言。有的同学可能会说,在java项目里执行其他语言,这不吃饱了撑着么,java体系那么庞大,各种工具......
  • js移除数组,删除数组
    一、修改arr的length方法根据修改后的length去除后面的元素。letarr=[1,2,3,4,5,6,7,8,9];arr.length=3;console.log('length',arr.length);//3console.log('a......
  • 解决Webstorm Nodejs console.log("这是中文") 控制台乱码
    设置文件编码自定义vm选项文件添加文件最后一行添加-Dfile.encoding=UTF-83.修改注册表Windows+R-->regedit-->计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsof......
  • 使用sheet.js导出数据
    下面是核心代码letexportColDataletexportColHead//excel工作簿全局变量letworkBook=null;//excelsheet全局......
  • js 语言基础
    基础概念:任何语言的核心最基础层面一定包括:语法、操作符、数据类型、以及内置功能大小写ECMAScript中的一切都是区分大小写的,无论是变量操作符还是函数名标识符......
  • Application entry file "electron\background.js" does not exist
    背景用Vue3+Electron开发了个PDF自由合并客户端。客户端侧代码慢慢膨胀,于是想将默认的路径src/background.js调整到electron/background.js。于是修改了:vue.c......
  • 前端开发JS之BOM、DOM操作、事件、jQuery类库
    BOM操作DOM操作查找标签操作节点class与css操作事件事件实战案例jQuery类库标签对象与jQuery对象BOM操作全称:BrowserObjectModel指浏览......
  • 【requirejs】requirejs使用layui,layui样式无法正常加载
    【requirejs】requirejs使用layui,layui样式无法正常加载 requirejs里使用layui,会有3个css文件无法正常加载错误提示GET http://127.0.0.1:8080/css/modules/lay......
  • 前端JS
    窗口相关操作//以下代码均为省掉window前缀的尽量写全(见名知意)open()//打开新的空白网页(可跟网址)open('网址','','宽,高')//打开新的子页面......
  • 前端之js之BOM操作-DOM操作-jQuery类库
    目录前端之js之BOM操作-DOM操作-jQuery类库今日内容概要今日内容详细BOM操作DOM操作查找标签操作节点获取值操作class与css操作事件事件实战案例jQuery类库标签对象与jQuer......