JS逆向之webpack打包网站实战
前言
最近学习的进度有点缓慢,前段时间研究了下极验的滑动验证的js,怎么说呢,难度还是可以的,之后会写关于极验的一个流程跟加密破解的过程,在这之前呢,我们先了解下另一个知识点---webpack,会对之后研究极验还是有点帮助的。本文会带着大家从了解到实战解决一个webpack打包的网站,网址aHR0cHM6Ly9zeW5jb25odWIuY29zY29zaGlwcGluZy5jb20v
一、webpack是什么?
webpack打包是前端js模块化压缩打包常用的手段,特征明显,比如
!function(x){function xx(n){return ..call(**.exports, ***, ***.exports, xx)}
}()
又或者更直观的表现n["xxx"]这种,你可以大概知道了这是webpack打包的js代码。那我们该怎么解决这类网站呢?说个通用的方法:
1.先去找加密网站的加密入口。这应该是加密网站都必须要做的
2.找到分发器的位置,或者说是加载器,就比如上方中的exports的位置
3.用到了哪些模块就导入哪些模块
4. 将函数入口的地方返回全局,最终返回
二、webpack实战
1.找到加密入口
此网站登录密码是加密的(账号密码随意写都可以,只是了解密码加密的原理,无需注册),我们第一步如标题,先找到加密入口
我们可以看到password的加密方式,Object(o.a)(t),而上方var o = n("MuMZ");是不是有点眼熟,这不是巧了么,这时候我们开始走第二步,看看是不是我们想象中的那样。
2.找到分发器的位置
怎么找?我们此时将其他断点都取消,我们随意在如n("MuMZ")这样的前方打上断点,直接刷新页面,我们进入这个方法中,如下图所示
进去之后我们找到了如下图的分发器的位置
我们把!function自执行的代码全部copy下来,执行的时候会出现window is not defined的报错,我们要做的是定义一下,window=global;要记得我们用到的是f这个函数
3.找模块
我们找到o的方法,上面我们说了var o = n("MuMZ"),如下图
这里我们就直接把整个MuMZ这个模块放入webpack中,然后调用这个模块。我们在外部定义一个变量名,在webpack中让这个变量名与f相等。
我们直接在最下方 sign('MuMZ')调用看报错,你会看到一个经典的报错Cannot read property 'call' of undefined,什么原因呢,是因为你缺少了模块,我们找报错的地方,会找到var r = n("XBrZ");,那我们直接全局搜索,找到后把这个模块继续放进去,继续运行,还出现刚才的经典报错,那就说明还有模块要找,如下图
我的天,这么多,这里我发现了一个让我开心的地方,标记出来的那些方法全在一个js文件中,那我就不一个个模块的去找了,我直接require这个js文件呗
4.返回全局
首先在nodejs中没有btoa,我们在控制平台上看下btoa有没有重新定义写法,这个网站因为是没有自定义写法的,那我们可以直接用buffer来转义,最后我们要把数据返回全局,在外部定义一个desc(),具体代码如下图
总结
这能算典型的webpack网站如何去解决的一个流程,无论里面是否混淆还是里面有很多环境检测,大致流程是这样,你要基于这个流程去解决内部复杂的问题,
webpack不能算是反爬的手段,掌握流程大致上就没有问题了。
JS逆向之webpack打包网站实战相关推荐
- Vue+Vue Router+Webpack打包网站基础页面
Vue+Vue Router+Webpack打包网站基础页面 1.目录结构 2.package.json所需依赖包 {"name": "vue_router_webpac ...
- JS逆向之Webpack(二)
JS逆向之Webpack(二) 难度: ⭐️ 网址如下 https://synconhub.coscoshipping.com/ 需要逆向的值: 登录请求的password 找到加密的位置 看起来想R ...
- vue.config.js配置,webpack打包配置详解
注意: vue-cli3 脚手架搭建完成后,项目目录中没有 vue.config.js 文件,需要手动创建 第一步:手动创建vue.config.js文件, 一般放在和package.json同级目录 ...
- 有道js逆向(webpack,调用crypto库实现)【超级详细】
目录 一.逆向请求参数 全局搜索sign: 二.解密返回参数 1利用node.js 内置密码库crypto 2利用webpack工具半自动扣js 话不多说,直接干 接口:aHR0cHM6Ly9kaWN ...
- JS逆向之Webpack 处理2
本文参考链接:webpack逆向-中远海运-油猴中文网 这个难点在于入口函数调用库是从两个文件中调用的. 首先把入口函数扣出来 其中o.a,o=n("MuMZ"),全局搜索&quo ...
- 【JS逆向】某篮球网站返回内容解密
前言 本文章内容仅仅提供学习与交流,严禁用于商业和非法用途,如侵权请联系删除!!! 一.目标 目标网址:aHR0cHM6Ly93d3cuY2JhbGVhZ3VlLmNvbS9kYXRhLyMvbGVh ...
- js逆向爬虫某openLaw网站
1.解析思路: 按照常规步骤进行抓包:输入错误的账号密码,找到post/get请求地址->看请求表单数据是否加密->全局搜索加密关键字->找到与之相关联的js加密函数,扣出js代码 ...
- js逆向 - 某电商网站 fingerprint 参数
本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除! 目标网站:aHR0cHM6Ly93d3cuamQuY29tLw== 目标接口:Cmh0dHBzOi8vYXB ...
- 爬虫:JS逆向之Webpack-乾坤大挪移
本教程仅供技术研究参考,勿做它用! 网上看了几个webpack逆向的教程,写的比较跳跃,初学者实操起来会感觉有点跳跃,重新理了一下,方便初学者一步一步验证. 技术门槛:会使用nodejs调试代码,会浏 ...
最新文章
- Java--对象与类(三)
- phpinfo.php ctf,这你不是你所常见的PHP文件包含漏洞(利用phpinfo)
- Spring AOP动态代理-切面
- OpenCV中Mat属性step,step1,elemSize,elemSize1
- 需求实在太旺盛,三星电子考虑扩大在华芯片产能
- Android Studio: Debug Android SDK Source Code
- Microsoft Dynamics CRM server 2013 一般销售流程之 报价单功能详解
- 大厂高级前端面试题答案
- leetcode 236. 二叉树的最近公共祖先LCA(后序遍历,回溯)
- 字符串的切割操作(strtok,split)
- IntelliJ IDEA 12 与 Tomcat7 配置
- python exec函数 自动代码规范_Python 开发编码规范
- C++——动态内存分配new--delete
- CCS Product ****** is not currently installed and no compatible version is available 报错调试
- LoRa无线通信设计(一)原理
- 工业3D互联网可视化三维数字化智能工厂管理系统
- web版ppt制作插件impress.js源码注释翻译
- MySQL 查询各科前三名
- 爬虫项目实操五、用Scrapy爬取当当图书榜单
- memcpy的F libc : FORTIFY: memcpy: prevented异常分析处理