JS逆向 - 163Email 登录 参数pVParam (Worker线程)
JS逆向 - 163Email 登录 参数pVParam (Worker线程)
概要
提示:仅供学习,不得用做商业交易,如有侵权请及时联系
逆向: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,就不多说了,自己网上百度,说一说我的理解
- worker相当于一个临时线程,在js中就是一个对象,它可以实例化,当实例化时,会传入一个Blob对象,这个对象相当于一个临时js的url,里面会生成临时的js,当线程结束后会关闭
- 实列的worker对象里面会有俩个属性:postMessage和onmessage
- 我可以这样理解:onmessage是接收消息的:当我们需要在worker临时js文件里面加密时,我可以传递一些明文对象
- postMessage是发送:当明文加密完成后,我可以通过这个属性把密文给拿到
- 那么它是怎么触发的呢?事件对象,通过message事件传递触发
2、了解了这个之后,就好弄了,我们直接去断一下new Worker的地方,先进入这个临时文件

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

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


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

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

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

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


所有评论(0)