JS逆向 - 瑞数4代cookie补环境调试

文章旨在学习和记录,若有侵权,请联系删除

文章目录

  • 前言
  • 一、202页面分析
  • 二、本地调试
    • 1.扣代码
    • 2.补环境


前言

目标网址:aHR0cHMlM0EvL3dlbnNodS5jb3VydC5nb3YuY24v
目标参数:cookie中的 FSSBBIl1UgzbN7N80T
目标特点:js混淆、大数组、环境检测、控制流平坦化


一、202页面分析

瑞数4代主要有两层js

  1. 第一层是202页面返回的js

  2. 第二层是第一层js中用eval执行的虚拟机里面的代码
    (可全局搜索.call定位到eval处)

根据上篇文章《JS逆向 - 某数4代特征》可知,第一次响应返回的页面有三个重点。

我们先打上script断点,然后请求网网址,断住。

JS逆向 - 瑞数4代cookie补环境调试_第1张图片
格式化后,

第一处meta标签
这里面的内容将会在第二层的js里面用到,主要是用于加密,js取出时也起到检测环境的作用,需要正则匹配出拿进第二层里面。

第二处导入了一个js文件
这个js文件主要用于生成第二层混淆的js代码。

第三处自执行函数
主要有三方面作用,第一是生成了大对象window.$_ts(在第二层js中会频繁用到);第二是定义了一些值,这些值的变量名会变,不要记变量,可以正则匹配这些值的位置(在第二层js中用于关键流程);第三是声明了一些函数,第二层js中也会回来调用。(如果使用补环境方式,第一层的js都可以不用扣,下面会介绍如何补环境来过某数)

二、本地调试

1.扣代码

由于页面直接给出的就是一个自执行函数,我们直接扣下来,别忘了将meta和js文件里的内容也拿出来。
JS逆向 - 瑞数4代cookie补环境调试_第2张图片
补上window后我们就可以进行调试了。

使用pycharm不方便调试js,容易卡死,下面我们使用vscode。
JS逆向 - 瑞数4代cookie补环境调试_第3张图片

全局搜索 .call 并打上断点,debugger,然后点单步追进去。
JS逆向 - 瑞数4代cookie补环境调试_第4张图片
我们这就成功的进入了第二层js里面。

2.补环境

我们将文章《Proxy代理函数在JS逆向补环境中的妙用》中介绍的 proxy 代码拿过来用。
JS逆向 - 瑞数4代cookie补环境调试_第5张图片
将 proxy 代码放到抠出来的js头部,运行,会发现输出了很多环境,根据undefined的值来补。

补完第一层,单步进入eval.call里面补第二层。

主要检测的环境有: window、document、navigator、location、localStorage等等。

注意要把 setTimeout、setInterval 置空,将浏览器断住的代码拿到本地中进行联调,如果遇到有些加密流程使用到了随机数,可以将hook随机数返回固定值,然后慢慢调试,保持生成的cookie和浏览器的一致就成功了。

最后,让我们来进行愉快的补环境调试吧。

你可能感兴趣的:(Js逆向,javascript,vscode,爬虫,python)