网站:https://q.10jqka.com.cn/
1.首先打开网站开发者工具,找到加密参数
可以发现加密参数就是 cookie 中的v参数
所以我们就快速进行第二步
2.Hook cookie的加密位置
hook 脚本如下:
(function(){
Object.defineProperty(document,'cookie',{
set:function(val){
if (val.indexOf('v')!= -1){
debugger;
}
console.log('Hook捕获到cookie设置->',val);
return val;
}
})
})();
点击运行脚本,随后点击翻页,就hook到加密参数 v 的值啦:
接着,跟堆栈,寻找 v 生成的具体位置:
找到了!
找到具体位置后,往里面继续跟函数:
点击后跳转到:
记住这一步,这里非常有用,因为在后面的步骤中我们将会用到它。
3.补环境
现在正式进入补环境咯!
首先,将代码全部复制进入本地js文件中。
a. 直接运行代码,发现报错,如下:
所以,我们得去补document对象中为undefined的部分。先在浏览器中查看:
返回标签信息,补环境时补其对象:
再运行
发现第一次运行时的 getElementsByTagName 报错没有了,是不是很神奇哇?
其实 我们可以回过头,查看第一次运行时的报错(代码释义为:如果前面成立,则不执行后面):
复制框住的地方,在网页上寻找,下一个断点进行观察:
点击刷新,发现断点不会在第二个断点中停留,即不执行第二个断点后的代码。
所以,第一次执行的两个报错,其实是因为前一个方法为空,导致后面的方法报错。
b.查找 Document.createElement() 、EventTarget.addEventListener() ,发现它们都是方法
所以,把它们都“搞里头”:
现在再运行:
发现没有报错,那很好了。
还记得我前面说的很重要的一步吗,现在我们就要用到它咯。
c.定位到本地js代码中的位置,导出全局对象
执行:
发现如下报错:
当前的 E 缺失了
我们可以通过直接补环境的方法解决,差什么补什么。
所有补环境代码如下:
4.运行代码
环境已经全部补完,让我们运行js代码试试呢:
成功生成加密参数。
over over