首页 > 其他分享 >JS逆向实战21——某查查webpack密码加密

JS逆向实战21——某查查webpack密码加密

时间:2023-08-15 17:24:30浏览次数:36  
标签:exports 加密 21 JS webpack 模块 断点 函数

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

网站

aHR0cHM6Ly93d3cucWNjLmNvbS8=

前言

阅读前 请先阅读下我的另一篇文章 看看别的webpack打包的网站是如何逆向的。(https://www.cnblogs.com/zichliang/p/17517073.html)
此文章只是单纯分析。不涉及滑块以及风控以及headers其他的参数。
只是单纯研究密码的加密。

数据接口分析


如上图所示,我们需要把epass参数的生成给找出来

直接搜索这个参数 点击第二个

console运行下

证明 o.default.encrypt(a, "qcc") 这个方法就是我们所需要的方法函数
解析进断点。往下走


这就可以判断。这是通过webpack打包的程序。
我们点进这个函数中


然后发现这不就是加载器 只不过不能直接用吗?

扣代码

扣加载器

其实这个加载器很简单。

我们把源码复制到本地,收缩起来,发现这个文件本身就是个自执行文件。
这个文件,我们将他手动修改一下

!function (r) {
    var l = {};
    function d(e) {
        var t = l[e];
        if (void 0 !== t)
            return t.exports;
        var a = l[e] = {
            id: e,
            loaded: !1,
            exports: {}
        };
        console.log(e)
        return r[e].call(a.exports, a, a.exports, d),
            a.loaded = !0,
            a.exports
    }
}({
    //模块代码
})

修改成这个鸟样子就可以了。

定位加密函数

我们重新输入账号和密码然后过下最开始我们过的断点。

持续往下走。。。。
在这里打上断点

然后去刷新页面。
因为webpack打包是初始化项目,所以后面不需要再输入密码去看断点了。

看下堆栈。我们往下看第二个模块代码 251115

可以发现 e.AES = n._createHelper(v) 这个地方就是我们加密初始化的地方。

那么有个问题来了: 为什么 35519 不是呢?
很简单: 一句话 这个模块代码是调用加密算法的。

改写加密函数

把这个模块代码放到分发器中。

还需要加一步============> 把这个加密方法抛出去 ,这样后续才能调用 window.aes_encrypt"encrypt" 这个方法。

还需要两步

  1. 在加载器中调用这个加密方法。
  2. 打印下所需分发器 函数的值

后面就很简单了,一直运行 缺什么模块函数就补什么模块函数。

结果

全部都补充完毕,我们运行下我们代码。

标签:exports,加密,21,JS,webpack,模块,断点,函数
From: https://www.cnblogs.com/zichliang/p/17631880.html

相关文章

  • Asp.net WebAPI中Controller的方法在接受到json时序列化都为null的问题
    原因是,webapi默认不序列化字段,只序列化属性只需要把字段改成属性即可 ------------------改成---------------- ......
  • 虚拟化103.216.154.x
    虚拟化是一种资源管理,将计算机的各种实体资源,如果服务器、网络、内存、存储等,予以抽象、转换后呈现出来,打破实体结构间的补课切割障碍,使用户可以比原来组态更好的方式应用这些资源,这些资源的新虚拟部分是不受现有资源架设方式,地域或者物理组态所限制。一般所指的虚拟化资源包括计算......
  • nvm及nodejs安装和使用(Windows下切换多版本nodejs)
    一、安装nvmnvm是一个简单的bash脚本,它是用来管理系统中多个已存的Node.js版本注:如果在安装nvm前已经安装了node,建议先将原来的node进行卸载或删除,可通过wherenode查看node安装路径:1、下载并安装nvm,下载地址:https://github.com/coreybutler/nvm-windows/releases,下载.zip后缀......
  • ChatGTP - 使用js实现炸jinhua游戏
    实现一个完整且复杂的炸jinhua游戏需要考虑到很多方面,包括玩家互动、游戏状态管理、游戏规则和逻辑等等。下面是一个较为简化的炸jinhua游戏的代码示例://定义一副扑克牌constSUITS=['♠','♥','♦','♣'];constRANKS=['2','3','4','5','6',......
  • ChatGTP - 使用js实现掼蛋游戏
    实现一个完整而复杂的掼蛋游戏涉及到许多方面,包括玩家互动、游戏状态管理、游戏规则和逻辑等等。下面是一个较为简化的掼蛋游戏的代码示例://定义一副扑克牌constSUITS=['♠','♥','♦','♣'];constRANKS=['2','3','4','5','6','7......
  • ChatGTP - 使用js实现升级游戏
    实现一个完整且复杂的升级游戏涉及到很多方面,包括玩家操作、游戏状态管理、游戏规则和逻辑等等。下面是一个较为简化的升级游戏的代码示例://游戏状态枚举constGameState={NOT_STARTED:'NOT_STARTED',BETTING:'BETTING',PLAYING:'PLAYING',END:'END'};cla......
  • fastjson反序列化 TODO
    参考链接fastjson反序列化入门文章https://tttang.com/archive/1579/https://xz.aliyun.com/t/12096ASM动态加载相关,如何查看内存生成的类的源码https://juejin.cn/post/6974566732224528392#heading-6https://blog.csdn.net/wjy160925/article/details/85288569关闭ASM去......
  • spring mvc 前端返回 js
    @RequestMapping(value="/test",produces="text/html;charset=UTF-8")@ResponseBodypublicStringtest(){Stringurl="";return"<script>window.location.href='"+url+"';</script>"; ......
  • 8-15| _ctypes.COMError: (-2147352567, '发生意外。', ('无法获取 Document 对象', '
    此错误是一个COM错误,它与试图从Python通过`pyautocad`与AutoCAD通信时出现的问题有关。错误信息"无法获取Document对象"指示了问题的本质,即Python无法访问AutoCAD的当前文档。这里有一些建议来解决这个问题:1.**确保AutoCAD已经运行**:在尝试从Python访问Aut......
  • 详细讲解原生js拖拽
    场景描述今天遇见一个问题,那就是产品希望在弹出来的窗口。可以移动这个弹窗的位置增加用户体验,我们直接使用的element-ui中的Dialog对话框我们现在需要拖拽标题,移动元素位置元素拖拽的思路要让元素按下移动,我们需要实现以下几个步骤:1.鼠标按下元素跟随光标移动2.鼠标抬......