JS逆向|加密参数定位的另一种方法及风控的一些思考

以下内容都是跟着哲哥的直播视频学的,还好我会举一反三,话不多说,直接开干吧。

下图是某验的 w 加密参数:

如果你直接搜索"w" 的话,是搜索不到的,那怎么办?你可以看别人是怎么定位的,也可以通过AST还原某些代码了再来搜索。

这里介绍一种网上没有介绍的方法,当然,也不是通用的。

一,打开Memory面板,翻到下面,点击 Take snapshot按钮:

二,复制 w 参数的前一部分值,比如我这里复制的是"2BUGNimv)zBD5tAPODtz":然后切换到Memory面板:

在上图的这个区域内按下 CTRL + F 按钮,输入刚才复制的一部分字符串并回车:

然后把鼠标移动到下面的 Object 面板,可以看到 w 这个 key 都直接显示出来了。

如图所示,可以将鼠标移动的 w或者o位置,是有值的,然后移动到第四行的() 位置,点击上面的 fullpage.8.9.5.js,跟进到这个 js文件,并在跟进的那行打上断点::

刷新页面,让滑块重新加载,你会发现停在了断点位置:

可以看到o对象已经生成了,并且是通过第三个参数传递进来的,因此跟进 函数 lBoG 的调用栈看看:

    

这里变成了r参数:

继续跟 nJFX 的调用栈,并关注第三个参数:

在这里变成的a,可以看到 a 是在上面赋值的:

这样就定位到了w参数加密的位置。

本想用还原前的代码演示的,发现我的电脑停在断点的位置,浏览器就直接卡死了,相信各位配置比较高的电脑不会卡死。

再举个另外的例子,下面是某数据的参数加密:

全局搜索 analysis 是没有结果的,那按照上面的方法 搜索 部分值看看,发现也搜索不到,这时,可以换个角度,就搜索 analysis 试试:

鼠标移动到get(),看看有没有js弹出:

跟进去,并打上断点:

再次请求 IOS榜单实时排名,发现停在了断点位置:

在这个get函数里面没有找到T这个变量,那就往上找试试:

在这行打上断点并按下F8,停在了这里:

看到了熟悉的  analysis  值,可以确定,这就是 analysis  参数加密的位置了。请读者自行验证。

请大家不要做违法罪犯的事情哦!

下面的内容是关于WEB端风控的一些菜鸟想法,大佬们请轻喷。

试想一下,如果浏览器的某些指纹值没有提交给后端,仅仅只是参与了加密,后端是无法校验加密后的值的。比如把浏览器的某些指纹值进行md5摘要算法,而在提交参数的时候,并没有提交这些指纹值,那提交的这个md5处理过后的值,它也不可能知道处理前的原值是什么,因为md5是不可逆的。

它只能判断浏览器的某些指纹是否存在(如果值为空也叫存在)。如果该值恒定不变而且总是在访问,从而触发风控。

如果是这样,random一下就完事了,当然也不能太离谱。我猜想估计还有什么检测区间什么的,毕竟我没做过风控,只能靠猜。

举个最简单的例子,JS代码检测了浏览器的插件,并将所有插件的值进行了加密运算提交给服务器。

试想一下,如果浏览器没装插件呢,那它的值就是空啊:

不可能说没有装插件的浏览器就不给访问了,那肯定是不行了,因为大部分用户是不会安装插件的。

所以在补环境的时候,将插件的值直接置空即可。对一个空值再怎么处理结果都不会太复杂吧。

从这里可以推断出,即要防,又不能误伤,那WEB端的风控也太难了。

一点点小的看法,另外的请发散自己的思维吧。也可以购买我们夜幕团队的高阶课程了解更多指纹相关的知识。

如需购买请点击左下角的 阅读原文 即可跳转至购买链接处,也可以扫描下方的二维码购买,感谢阅读。再见!