声明

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

网站

目标网站:aHR0cHM6Ly93d3cudG91dGlhby5jb20v

数据接口:aHR0cHM6Ly93d3cudG91dGlhby5jb20vYXBpL3BjL2xpc3QvZmVlZD9vZmZzZXQ9MCZjaGFubmVsX2lkPTk0MzQ5NTQ5Mzk1Jm1heF9iZWhvdF90aW1lPTAmY2F0ZWdvcnk9cGNfcHJvZmlsZV9jaGFubmVsJmRpc2FibGVfcmF3X2RhdGE9dHJ1ZSZhaWQ9MjQmYXBwX25hbWU9dG91dGlhb193ZWI=

抓包分析

这个网站的的数据包有点多,为了更好的筛选,所以我们这里使用charles去抓包,也为了更加清楚的展示。因为charles的包 是分网站的



抓到了如下的包,我们挨个看下 首先我们看看第一个请求



果然是这个数据包,

然后我们看看这个的请求参数 如下图所示



可以看到除了 | channel_id | _signature 除了这两个参数,其他值好像都是定值。

为了确保玩意,我们再抓包一次。



哦吼,我们对比一下 发现好像只有 _signature 不太一样。

第一次:

| channel_id | 94349549395 |
| _signature | _02B4Z6wo00f01z9d1bwAAIDCyiI.IkUKHQM.edEAAKt.NqUmn4ygAiOSxwaKaigCOeg56Ff89u.9vP6b6ub68vuKs2N8MHE1ooq3YQAYT9luKwEo58Z5CbtbU8m9.KvQ5zIywt7.ZVQByMpff7 |

第二次

| channel_id | 94349549395 |
| _signature | _02B4Z6wo00f01NpipegAAIDBLx1PdBeQ8LjaRqFAAFJAobBdiGXrf3fs2SKPrZr3jjY4vZP3kG7vB7l1w4C5LnkJNONZ-driqsx4S8hbVV4x8o4bjxJqi6BYxnSX9CGLBfcQe.nfmtpz8dZ57e |

这个值每次都不一样,所以我们可以大胆猜测 这个值就是我们所需要的值。

寻找参数生成点。

我们直接开始去搜索 _signature 这个值



刚好发现第一个地点 就很像参数生成的地方,我们在这里打上断点。然后再搜索一下_signature 这个值



这里还有个值,我们也打上断点。

发现这个值虽然对了 ,但是好像传的参数不是我们所要的那个链接啊





我们继续往下走,跳过非我们所需的接口 也就是看看 F.getUri(e) 这个值。

在跳过三个请求后 终于找到我们所需要的这个接口了



我们接下里就逐步进栈。然后一直追。这个时候要有些耐心。

在经过几层跳站,终于找到了 参数生成的地点,这个a.call(n, o) 就是生成签名的地方。



我们可以看到 这个o 是个对象,里面是存放的url键值对。

而这个n 应该就是函数,我们把这个n抠出来,应该就大功告成了。

网站扣代码

接上一段。

我们打上断点再逐步进栈。



然后发现进到了acrawler.js 这个文件里面。我们简单过一下这个文件。发现这是个自执行函数啊。那我们直接全部复制下来补环境是不是就ok了。

我们试一试哈。

这里复制下来。会发现后面执行的参数很长,很影响观感。pycharm 设置一下js换行。



如上图设置即可。

我们在下面执行这句话。为什么是这句话呢。我们跳到外面这个栈去看看

window.byted_acrawler.sign({
"url":"http://localhost:8080"
})



然后运行。这个时候会报错



这个时候就奇怪了。这个地方怎么会报错呢。我们打印一下282行这个值看看。

分别打印下 S[R] R A 你就全懂了。尤其是是打印 A 这不就是妥妥的环境检测吗



我们给他补上

window = global;
window.document = {
referrer: ''
}

然后我们再次运行,发现还是不行 会报找不到sign这个值



那这就奇怪了,我们放到浏览器环境上运行下看看



发现在浏览器上流程运行,那就只有一种可能了,就是环境没补好。有些环境检测过不去。

我们把断点打在这个地方,这就是底下传参的地方



经过不断的 debugger 测试,将下图的两句话 改成 undefined



改好之后还会报一个错 ,我们再补上



由于这个href里面东西也不是很多,我们就全补上了

window.location = {
"ancestorOrigins": {},
"href": "https://www.toutiao.com/?wid=1688368231201",
"origin": "https://www.toutiao.com",
"protocol": "https:",
"host": "www.toutiao.com",
"hostname": "www.toutiao.com",
"port": "",
"pathname": "/",
"search": "?wid=1688368231201",
"hash": ""
}

然后还会报一个 Useragent的错误



我们继续补上

navigator = {
"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'
}

然后就扣代码扣成功了。



这个值好短啊。我们对比一下

_02B4Z6wo00f01vfjpbwAAIDBCBxaQ1vn84b3waEAANlo3f
_02B4Z6wo00f01z9d1bwAAIDCyiI.IkUKHQM.edEAAKt.NqUmn4ygAiOSxwaKaigCOeg56Ff89u.9vP6b6ub68vuKs2N8MHE1ooq3YQAYT9luKwEo58Z5CbtbU8m9.KvQ5zIywt7.ZVQByMpff7

足足长了一大截。

我们再挨个进断点看看。在如图的位置打上断点。挨个追栈查看。



后面发现在之前获取浏览器环境中发现,在出_signature之前,获取过一次cookie

所以我们还需要加上cookie 直接写死即可

document.cookie = 'msToken=YT_CAKC4j1yOwgMxbB2jtTTvxroozg34lnY5cf7g7_JSz377gE4XfhP07HZPUjoaoHEVch4egS8RXblHNVYDeiZruwFzZD7GNPayfzsnWyA=; __ac_signature=_02B4Z6wo00f017cKGvwAAIDCQnXwY7ZFvKO3Lh5AAIlpCKNViv2DVvvH6x4q.QT77MgQzrAiF9hMRCiHWWaFPKyKg89Jhy8HzzWEsxOCL0uGv6qSBlqyWa5ptCRdbDDYlnceGFmxuIms3oCRf6; local_city_cache=%E8%8B%8F%E5%B7%9E; csrftoken=a08a7c6e066f7118fe2f379bb779e6f5; _ga_QEHZPBE5HH=GS1.1.1688368982.1.0.1688368982.0.0.0; _ga=GA1.1.1087552243.1688368983; s_v_web_id=verify_ljmjastc_1G6Mv2zQ_Y8pE_4qln_8mk4_sM1M5ze46FYX; tt_scid=F-2KEY1R0ROnAeE9XHLVYZZuLIETYppB9GsM9UL-TAMWFnDlcgdmDViPv9tGci1rf76e'

然后就能运行成功了



然后我们封装一下 顺便替换一下某些值。

结果

部分代码如下图



完成!!

JS逆向实战20——某头条jsvm逆向的更多相关文章

  1. GIF Movie Gear逆向实战+注册代码+补丁

    GIF Movie Gear逆向实战+注册代码+补丁 准备 我是在windows 8.1 x64上进行的操作.有不足之处,还望大虾指出. 获取资源 网站下载:http://www.gamani.com ...

  2. 逆向实战干货,快速定位自动捡阳光Call,或者标志

    逆向实战干货,快速定位自动捡阳光Call,或者标志 注意: 关于CE和OD的使用,这里不再多说,快速定位,默认大家已经有了CE基础,或者OD基础. 第一种方法,找Call 第一步,打开CE,搜索阳光值 ...

  3. 逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复

    逆向实战第一讲,寻找OllyDbg调试工具的Bug并修复 首先我们要知道这个OD的Bug是什么. 我们调试一个UNICODE的窗口,看下其窗口过程. 一丶查看OllyDbg 的Bug 1.1spy++ ...

  4. 逆向实战干货,植物大战僵尸快速定位自动捡阳光Call,或者标志

    逆向实战干货,快速定位自动捡阳光Call,或者标志 注意: 关于CE和OD的使用,这里不再多说,快速定位,默认大家已经有了CE基础,或者OD基础. 第一种方法,找Call 第一步,打开CE,搜索阳光值 ...

  5. 32位汇编第五讲,逆向实战干货,(OD)快速定位扫雷内存.

    32位第五讲,逆向实战干货,快速定位扫雷内存. 首先,在逆向之前,大家先对OD有一个认识. 一丶OD的使用 标号1: 反汇编窗口 (显示代码的地址,二进制指令,汇编代码,注释) 标号2: 寄存器窗口( ...

  6. iOS逆向实战与工具使用(微信添加好友自动确认)

    iOS逆向实战与工具使用(微信添加好友自动确认) 原文链接 源码地址 WeChatPlugin-iOS Mac OS 版微信小助手(远程控制.消息防撤回.自动回复.微信多开) 一.前言 本篇主要实现在 ...

  7. [实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator

    写在前面 考虑到数据量的问题,特引入bootstrap的分页插件.插件下载地址:https://github.com/lyonlai/bootstrap-paginator 系列文章 [EF]vs15 ...

  8. 《Node.js开发实战详解》学习笔记

    <Node.js开发实战详解>学习笔记 ——持续更新中 一.NodeJS设计模式 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直 ...

  9. [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)

    前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件  ==> “2. 每年的周数从(1-52), 如果超过52 周 ...

  10. Geth控制台使用及Web3.js使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3. Geth 控制台(REPL)实现了所有的web3 API及Admin API, 使用好 Geth 就是必修课.结合Geth命令用 ...

随机推荐

  1. 新手如何让一个python写的游戏运行起来

    本文主要解决问题为python中的pygame库安装 安装包版本:python-3.4.3.amd64.msi 下载链接:https://pan.baidu.com/s/1_jIRdVugSNzXKb ...

  2. Java并发(二)----初次使用多线程并行提高效率

    1.并行 并行代表充分利用多核 cpu 的优势,提高运行效率. 想象下面的场景,执行 3 个计算,最后将计算结果汇总. 计算 1 花费 10 ms ​ 计算 2 花费 11 ms ​ 计算 3 花费 ...

  3. PyTorch实践模型训练(Torchvision)

    模型训练的开发过程可以看作是一套完整的生产流程,这些环节包括: 数据读取.网络设计.优化方法与损失函数的选择以及一些辅助的工具等,TorchVision是一个和PyTorch配合使用的Python包, ...

  4. Indent----- IndentationError: unexpected indent

    Unexpected indent 错误 注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现.但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个 ...

  5. 【源码分析】XXL-JOB的执行器的注册流程

    目的:分析xxl-job执行器的注册过程 流程: 获取执行器中所有被注解(@xxlJjob)修饰的handler 执行器注册过程 执行器中任务执行过程 版本:xxl-job 2.3.1 建议:下载xx ...

  6. C++冒泡排序简单讲解

    此文章我已在洛谷博客发布,不算抄袭 什么是冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访 ...

  7. JVM有意思的图-持续更新

    放一些JVM有意思的图 通过一行代码联想JVM:

  8. [OpenCV-Python] 20 图像金字塔

    文章目录 OpenCV-Python:IV OpenCV中的图像处理 20 图像金字塔 20.1 原理 20.2 使用金字塔进行图像融合 OpenCV-Python:IV OpenCV中的图像处理 2 ...

  9. Python_16 配置文件与封装

    一.查缺补漏 1. ctrl + alt +L 规范格式 2. Python 使用 ini&yaml 配置文件 http://testingpai.com/article/1621245437 ...

  10. 关于OA系统的取数依据,以及如何逆向查询数据错误的思路。

    1.正文 00.起因 源于财务在群里发的问题.我估计对于很多同事,又会像往常一样充满疑问,尤其是对于oa的取数会有疑问,然后业务能力极差的那部分,又会想到这是运营的问题(话说关运营什么事?),这是项目 ...