JS逆向---JS调用和扣代码
JS
调用和扣代码
学习目标:
- 掌握 python调用
js
代码方式 - 熟悉
js
开放接口进行调用 - 了解 补环境的基本概念
- 掌握
js
调试技巧
一. pyexecjs
的使用
1. 简介
PyExecJS
是一个 Python 库,用于在 Python 环境中执行 JavaScript 代码。它实际上是对 ExecJS 库的 Python 封装,ExecJS 本身是一个通用的 JavaScript 运行环境的抽象层。使用
PyExecJS
,你可以在 Python 中执行 JavaScript 代码,而无需启动一个完整的 JavaScript 解释器。它的目标是提供一种简便的方式,使得在 Python 中嵌入 JavaScript 代码成为可能,特别是对于需要与 JavaScript 交互的项目而言。安装方式:
1 | pip install PyExecJS2 -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
2. execjs
使用方式
- 基本使用方法
1 | import execjs # 导入 |
二. Express开放接口
1. Express简介
官方给出的概念:Express 是基于
Node.js
平台,快速、开放、极简的 Web 开发框架。通俗的理解:Express 的作用和
Node.js
内置的http
模块类似,是专门用来创建 Web 服务器的。Express 的本质:就是一个
npm
上的第三方包,提供了快速创建 Web 服务器的便捷方法。Express 的中文官网:http://www.expressjs.com.cn/
http
内置模块与 Express 类似于浏览器中Web API
和jQuery
的关系。后者是基于前者进一步封装出来的。
2. Express使用方式
- 安装方式
1 | npm install express -S |
- 创建服务器
1 | // 1.导入 express |
- 获取
url
中携带的查询参数 - 请求对象中会有query,不传请求查询参数就是空值
1 | app.get('/', function(req, res){ |
- express发送post请求
1 | // 指定参数类型 |
三. js
调试技巧
1. 定位方法总结
dom
和xhr
断点定位- 关键字搜索(尽量符合可能在
JS
里面出现的形状 sign = sign: “sign”) - 使用hook技术进行拦截
- 根据启动器去找调用关系(分析启动器是比较麻烦的,运气成分比较多)
2. 实战案例
1. 逆向目标
- 目标网址:https://www.qimai.cn/rank/offline
- 接口:https://api.qimai.cn/rank/offline?analysis=ew8vECUSNA54ZX4XKQt8TygiLhI0LT9MfWMqHCxTdxwrHlgANBMFSHo3KRt3XDcMBQ9FRDoWHkUCCgoWWQMACwEWHDoWBQZaVlEAAVNTUVg4Wkk%3D&status=3&date=2023-12-21&sdate=2023-12-21&edate=2023-12-21&country=cn&genre=36&option=4&page=2
2. 逆向分析
定位加密位置
尝试关键字搜索
analysis
1 | // 搜索不到的原因 |
hook
定位
1 | (function () { |
- 可以看到他的数据在第三个栈已经生成好了,说明代码是在异步的过程中加密的数据,但是异步执行的代码在栈堆里面是看不到的,在异步生成的过程有两个原因,第一个可能是在单纯的异步代码生成加密的,另一种可能是在拦截器里面生成的
- 异步调试的方法,可以在发异步的位置下一个断点,先大致的过一点,先大致观察代码的执行的过程,前期可以先大致调试一下,大致知道数据在哪里生成之后就能精细化调整
- 拦截器,就能向上节课一样,向下调试找到响应拦截器,请求拦截器一般就是在响应拦截器的上面
- 加密位置
- e的值就是加密对应的数据
3. 逆向代码
- JavaScript代码
1 | function o(n) { |
- python代码
1 | import requests |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LittleShark's Space!
评论