概要

提示:仅供学习,不得用做商业交易,如有侵权请及时联系

逆向:JS逆向 - 163Email 登录 参数pVParam (Worker线程)

URL:aHR0cHM6Ly9tYWlsLjE2My5jb20v

这里我只分析一下Worker线程部分,其它参数自行模拟!!!

整体架构流程

提示:分析找到参数位置

1、首先它是登录接口gt里面的:存在于encParams表单的明文,注意是加密之前的明文数据

在这里插入图片描述

  • 这里直接搜索encparams
  • 下断点
  • 观察明文数据

2、分析pVParam是怎么来的:

在这里插入图片描述

  • 这里说一下,观察发包情况我们可以知道:puzzle是接口返回的
  • powGetP接口会返回:
{
    "ret": "201",
    "pVInfo": {
        "needCheck": true,
        "sid": "3c891c58-ccaf-4348-8aed-70304dd14a8c",
        "hashFunc": "VDF_FUNCTION",
        "maxTime": 550,
        "minTime": 500,
        "args": {
            "mod": "b3ef6efe1b82e7c2dbca7bdac95fe6b0ef",
            "t": 100000,
            "puzzle": "Yg2SisUbVqdze/D+Arw96fCwMlGfI4pYAxc8pvCT0uAC+ial5QbXvvRw17rvLeJdynB9xgYu5bgR\r\nF7WogX9uKur/XQJo35V/BZrFnqZEXmTFoG24Ry9GsIaGLEk2vxNCcGtcVPVUPl/OdXI+0616ty5c\r\n0uW59pMttMxZfctIKnJ3cLgedTMkcDQ/LkfVE+0RaNauRKQ9v3daFfH5XRQWe5rkTRfEmAzaRLSv\r\nkflEuuF0hMqqfYMORfOkPOqacDvDE2N4O7+7TDQymLcJ+W+6vQ==",
            "x": "ed296b26fd"
        }
    }
}

在这里插入图片描述

  • 后面肯定会用到这个,先留意

3、继续回到刚刚那个地方,pVParam怎么来的,直接搜索看一下:

在这里插入图片描述

4、你会发现有4处地方都用到了,但是它们的赋值都是一样的:e.pVParam = this.__powerData,所以这里,我们直接搜索一下 __powerData 是谁给的

在这里插入图片描述

5、你会发现有三处这个,都断上点:清楚缓存,重新刷新页面,然后输入账号观察断点情况

在这里插入图片描述

6、可以看到,__powerData的值有了,我们再往上跟三步栈:到onmessage这里

在这里插入图片描述

技术名词解释

提示:Worker的流程

1、关于什么是Worker,就不多说了,自己网上百度,说一说我的理解

  1. worker相当于一个临时线程,在js中就是一个对象,它可以实例化,当实例化时,会传入一个Blob对象,这个对象相当于一个临时js的url,里面会生成临时的js,当线程结束后会关闭
  2. 实列的worker对象里面会有俩个属性:postMessage和onmessage
  3. 我可以这样理解:onmessage是接收消息的:当我们需要在worker临时js文件里面加密时,我可以传递一些明文对象
  4. postMessage是发送:当明文加密完成后,我可以通过这个属性把密文给拿到
  5. 那么它是怎么触发的呢?事件对象,通过message事件传递触发

2、了解了这个之后,就好弄了,我们直接去断一下new Worker的地方,先进入这个临时文件

在这里插入图片描述

3、这里我们直接单步进入这个文件:

在这里插入图片描述

4、这个时候,我们可以通过搜索触发事件,也就是message事件,去找到触发的位置,也可以通过搜索postMessage

在这里插入图片描述
在这里插入图片描述

5、我们可以在这些位置上断点观察即可:

在这里插入图片描述

6、这里传递的其实就是powGetP接口返回的东西,继续跳断点到postMessage:

在这里插入图片描述

7、最后直接扣代码即可!

在这里插入图片描述

小结

提示:学习交流主页,星球持续更新中:(+星球主页+v)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐