欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

某盾代码js版流程分析从无感到空间点选(fp值和无感)

程序员文章站 2022-03-28 16:27:49
你只管努力,剩下的交给天意。文章只提供学习,如有侵权请立即联系我。前言先声明此文章只讲流程某盾的流程分析,而且某盾的跟新跟快,如果扣代码的话,会很快用不了,建议只看重点操作。某盾官网:官网总体来说某盾的验证码配合js总共分为四套打开官网第一眼就是这个样子。点击看看效果都有神马值没错就是这个validate一开始想搜一下的,想了一下,-,-不太合适,直接找来源去看看怎么回事吧。在你点进来的地方打上debugger清除缓解刷新再试试卧槽,没有debugger住这是怎么回....

你只管努力,剩下的交给天意。

文章只提供学习,如有侵权请立即联系我。

前言
先声明此文章只讲流程某盾的流程分析,而且某盾的跟新快,建议学习流程。

某盾官网:官网
总体来说某盾的验证码配合js总共分为四套
【fp和无感】
【actoken及滑块】
【轨迹加密以及图标拼图ast还原】
某盾代码js版流程分析从无感到空间点选(fp值和无感)
打开官网第一眼就是这个样子。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
点击看看效果都有神马值

某盾代码js版流程分析从无感到空间点选(fp值和无感)
没错就是这个validate某盾代码js版流程分析从无感到空间点选(fp值和无感)
一开始想搜一下的,想了一下,-,-不太合适,直接找来源去看看怎么回事吧。

某盾代码js版流程分析从无感到空间点选(fp值和无感)
在你点进来的地方打上debugger
某盾代码js版流程分析从无感到空间点选(fp值和无感)
清除缓存刷新再试试
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
卧槽,没有debugger住这是怎么回事?(如果debugger住了也不要紧过一会就debugger不到了,嘿嘿,你追不到我吧,追了就让你嘿嘿嘿)

这是是因为core这个请求每次都会变每次的时间不同,获取到的core就是是一个新的60秒一个,也就是说一分钟内你找不到这个点就GG了,那咋整?
别慌上一篇我们说了血轮眼(ast)的使用,这篇我们用替身来解决这个问题
某盾代码js版流程分析从无感到空间点选(fp值和无感)
那什么是替身呢–fiddler没错就是它,他不是抓包分析的吗?怎么又成替身了,因为fiddler可以拦截请求在中间做操作,那就意味着我在中间这一会会的时间可以为所欲为看下面让我们猥琐起来。

找到core的源码赋值粘贴到js文件里名字要相同。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
添加好之后再第一行一个consol.log以便测试是否替换成功。

某盾代码js版流程分析从无感到空间点选(fp值和无感)

接下来,进行这几个操作。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
然后在fiddlercat+f搜索core关键字找到我们要替换的链接某盾代码js版流程分析从无感到空间点选(fp值和无感)
点击要替换的链接点击add rule看看是否找到正确的了。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
想这个样子
某盾代码js版流程分析从无感到空间点选(fp值和无感)
但是这样还不行,因为这个会匹配不到这个链接,去掉exact和v=xxxx,成这样就可以每次都匹配到了。
某盾代码js版流程分析从无感到空间点选(fp值和无感)

点击test看看是否匹配到,没问题。
某盾代码js版流程分析从无感到空间点选(fp值和无感)

接下来一定要点击save,save,save不然无法使用。

替换完成后,看看效果。某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
这里说一下有很多种中间代理都可以修改并替换文件,不只是fiddler你可以使用任何软件或者chrome都可以这只是一种思路。

我们在从新从入口去看看能否看到我们想要的参数。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
心里美滋滋
某盾代码js版流程分析从无感到空间点选(fp值和无感)

点击调用栈看看提交的时候都需要哪些参数,他们来源何方。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
分析一下我们需要的参数是固定的还是需要js生成的。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
其他能搜到的就不演示了看看token吧!
某盾代码js版流程分析从无感到空间点选(fp值和无感)
看完这些我们大概直到现在要找的值就是cbdata
再回到我们刚才debugger的地址
某盾代码js版流程分析从无感到空间点选(fp值和无感)

cb其实就是一个函数我们在本地的js里看看cb是什么,原来是32的uuid那没事了
某盾代码js版流程分析从无感到空间点选(fp值和无感)
那么现在就剩下那个data值了调用栈走起来,呕吼原来就是这样子的呀。某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
s就是dom元素的信息某盾代码js版流程分析从无感到空间点选(fp值和无感)

j就是滑动的轨迹加时间

某盾代码js版流程分析从无感到空间点选(fp值和无感)
没错这就是无感的操作了某盾代码js版流程分析从无感到空间点选(fp值和无感)
等等,我们的token值还没获取呢,对再看看看token是如何来的。
某盾代码js版流程分析从无感到空间点选(fp值和无感)

token 的值大概也就能猜出来也就这一个值在变就fp其他的值都找过的。
某盾代码js版流程分析从无感到空间点选(fp值和无感)

直接在这里面搜索fp试试
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
md出现了两个?我们都打上断点试试,清除缓存
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
OK完美的hook到了,我们看到这值是来其他的函数,我们继续根据调用栈向上找。
某盾代码js版流程分析从无感到空间点选(fp值和无感)

我们发现第一个栈里是这样的,发现已经有fp的值了,我们继续向上找
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
第二个调用栈里发现试着这里赋值的,继续向上找。

某盾代码js版流程分析从无感到空间点选(fp值和无感)
发现在这里并没有我们想要的值,我们回到第二个调用栈在赋值那里打上断点重新hook
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
会发现我们的调用栈发生变法并且找到了fp的来源
某盾代码js版流程分析从无感到空间点选(fp值和无感)
点i这个调用函数就会发现新大陆,搜嘎,那么这个gdxidpyhxde是什么时候回给赋值到window身上的呢?
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
我们需要用到油猴去写一个hook脚本就hook这个gdxidpyhxde(保住头发)
某盾代码js版流程分析从无感到空间点选(fp值和无感)

注意:// @match https://*/* // @run-at document-start
这两个的意思分别是hook什么网站和什么时候注入,我们选择的时候https的网络全部hook,以及在生成document对象之前去代理window.gdxidpyhxde这个属性的get方法和set方法

// ==UserScript==
// @name        hookgdxidpyhxde
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*/*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';
    var _fp =window.fp;
    Object.defineProperty(window,'gdxidpyhxde',{
        get:function(){
            console.log("调用了fp",_fp)
            return _fp;
        },
        set:function(val){
            console.log("设置了fp",val)
            debugger;
            this._value = val;
            return val;
        }
    })
    // Your code here...
})();

某盾代码js版流程分析从无感到空间点选(fp值和无感)

打开刷新,清除缓存试试。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
就会hook到这里
某盾代码js版流程分析从无感到空间点选(fp值和无感)
继续向下执行查看我们到底在哪里生成的fp

到这里—重点来了就是这个函数

某盾代码js版流程分析从无感到空间点选(fp值和无感)
第一个给赋值为空我们再次按F8执行我们就会发现,这就是我们需要找的fp,向上找发现就这这个W函数生成的fp
某盾代码js版流程分析从无感到空间点选(fp值和无感)
这个w函数检测了很多window属性也就是游览器指纹
第一个值是主站的地址,第二个是navigator和canvas等游览器属性生成的根据你游览器版本不一样生成的这两个值不一致可以写死,然后单独拿出来w函数去补缺失的其他函数。
某盾代码js版流程分析从无感到空间点选(fp值和无感)
下面看看我抠出来的函数
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)
某盾代码js版流程分析从无感到空间点选(fp值和无感)*****************重点修改**************

某盾代码js版流程分析从无感到空间点选(fp值和无感)
这里建议注释掉try和catch ,最后一段没并没有什么卵用直接删除掉就好了
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
这样我们就可以拿到正常的fp了
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
去测试无憾的代码试试
某盾代码js版流程分析从无感到空间点选(fp值和无感)

某盾代码js版流程分析从无感到空间点选(fp值和无感)
小彩蛋最后的最后给大家说个其实无感是不验证fp的即使为依然可以请求成功(但是滑动和点选择的验证了,而且是必经之路,有很多小伙伴都死在这了这一步fp验证不成功获取到的token和图片是无法使用的)

最后的最后相信很多朋友看到这个·chrome不一样代码版本也不一样,是因为我几个月前就写好了,后来发现一些问题然后又修改了,直到今天才发版出来但是实际的操作就是这样的没有任何问题。

鸣谢:感谢我我好大哥布哥哥以及凡哥,飞机,晚安,懒哥,夏洛,明哥七位哥哥帮助帮助。

有疑问可以加群讨论:【1147451684】

本文地址:https://blog.csdn.net/qq_38999456/article/details/108294967

相关标签: 爬虫 js逆向