JS逆向之webpack 通用扣取思路

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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


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


相关文章
|
6月前
|
缓存 JavaScript 前端开发
js开发:请解释什么是Webpack,以及它在项目中的作用。
Webpack是开源的JavaScript模块打包器,用于前端项目构建,整合并优化JavaScript、CSS、图片等资源。它实现模块打包、代码分割以提升加载速度,同时进行资源优化和缓存。借助插件机制扩展功能,并支持热更新,加速开发流程。
62 4
|
6月前
|
JSON JavaScript 前端开发
Webpack【Webpack图片处理、Webpack中proxy代理 、自动清理dist、Webpack优化、JavaScript中的代码检查】(三)-全面详解(学习总结---从入门到深化)(下)
Webpack【Webpack图片处理、Webpack中proxy代理 、自动清理dist、Webpack优化、JavaScript中的代码检查】(三)-全面详解(学习总结---从入门到深化)
89 2
|
1月前
|
JavaScript
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
这篇文章介绍了如何将webpack的配置文件分离成开发环境和生产环境的配置文件,以提高打包效率。
48 1
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
|
3月前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
49 0
|
4月前
|
JavaScript Windows
安装node.js与webpack创建vue2项目
安装node.js与webpack创建vue2项目
35 1
|
4月前
|
JavaScript
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
|
4月前
|
JavaScript
vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
72 0
|
6月前
|
缓存 JavaScript 前端开发
js开发:请解释什么是Webpack,以及它在项目中的作用。
Webpack是开源的JavaScript模块打包器,用于前端项目构建,整合并优化JavaScript、CSS、图片等资源。它实现模块打包、代码分割以提升加载速度,同时进行资源优化和缓存。Webpack的插件机制可扩展功能,支持热更新以加速开发流程。
59 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
97 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
125 4
下一篇
无影云桌面