JS逆向之webpack 通用扣取思路

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

标题

环境

  • win10
  • chrome106

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

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

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

webpack必有一个加载模块的方法:call或apply,找到加载器先抠出来

functione(s) {

   if (i[s])

       returni[s].exports;

   varn=i[s] = {

       exports: {},

       id: s,

       loaded: !1

   };

   returnt[s].call(n.exports, n, n.exports, e),

}

2.构造成自执行方法

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

!function(t) {

   functione(s) {

       vari= {};

       if (i[s])

           returni[s].exports;

       varn=i[s] = {

           exports: {},

           id: s,

           loaded: !1

       };

       returnt[s].call(n.exports, n, n.exports, e),

   }

}()

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

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

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

!(function(t) {

   vari= {};

   functione(s) {

       if (i[s]) returni[s].exports;

       varn=i[s] = {

           exports: {},

           id: s,

           loaded: !1

       };

       returnt[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) {

   vari= {};

   functione(s) {

       if (i[s]) returni[s].exports;

       varn=i[s] = {

           exports: {},

           id: s,

           loaded: !1

       };

       returnt[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.编写自定义方法 按照流程加密

functiongetkey(pass, time) {

   vardiaoyong=_e("diaoyong");

   //这儿需要new一下调用方法,不然获取不到方法属性

   varnew_diaoyong= (newdiaoyong);

   returnnew_diaoyong.encode(pass, time)

}

效果

资源下载

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


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


相关文章
|
2月前
|
缓存 JavaScript 前端开发
js开发:请解释什么是Webpack,以及它在项目中的作用。
Webpack是开源的JavaScript模块打包器,用于前端项目构建,整合并优化JavaScript、CSS、图片等资源。它实现模块打包、代码分割以提升加载速度,同时进行资源优化和缓存。借助插件机制扩展功能,并支持热更新,加速开发流程。
20 4
|
4月前
|
JSON JavaScript 前端开发
Webpack【Webpack图片处理、Webpack中proxy代理 、自动清理dist、Webpack优化、JavaScript中的代码检查】(三)-全面详解(学习总结---从入门到深化)(下)
Webpack【Webpack图片处理、Webpack中proxy代理 、自动清理dist、Webpack优化、JavaScript中的代码检查】(三)-全面详解(学习总结---从入门到深化)
51 2
|
8天前
|
缓存 JavaScript 前端开发
js开发:请解释什么是Webpack,以及它在项目中的作用。
Webpack是开源的JavaScript模块打包器,用于前端项目构建,整合并优化JavaScript、CSS、图片等资源。它实现模块打包、代码分割以提升加载速度,同时进行资源优化和缓存。Webpack的插件机制可扩展功能,支持热更新以加速开发流程。
16 2
|
6月前
|
JavaScript 前端开发 数据库
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-3
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
48 0
|
5月前
|
编解码 JavaScript 前端开发
Node.JS学习 | Babel | webpack | ES6
Node.JS学习 | Babel | webpack | ES6
48 0
|
5月前
|
前端开发 JavaScript
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)
42 0
|
5月前
|
存储 前端开发 JavaScript
【前端开发】JS Vue React中的通用递归函数
【前端开发】JS Vue React中的通用递归函数
38 0
|
5月前
|
存储 JavaScript 前端开发
原生js vue react通用的递归函数
原生js vue react通用的递归函数
24 0
|
6月前
|
机器学习/深度学习 JavaScript 前端开发
一条通用的javascript学习路径
一条通用的javascript学习路径
|
6月前
|
Web App开发 JavaScript 前端开发
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-2
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
42 0