某盾代码js版流程分析从无感到空间点选(最后一篇轨迹加密图标以及拼图和ast)

2022-07-27,,,,

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

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

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

某盾官网:官网
总体来说某盾的验证码配合js总共分为四套
【fp和无感】
【actoken及滑块】
轨迹加密以及图标拼图ast还原】

还是前面的一样从这里开始

一路向北然后在这里下断点,刷新再来

然后就,找到了加密文字点选图标图形推理都是这个加密在这里扣就完事了

最后再说一个加密不同的拼图

下面是ast还原代码

// 这是文件流
const fs = require('fs');
// 解析js代码为json格式
const {parse} = require("@babel/parser");
// 根据是json格式的节点来处理json格式的js代码
const traverse = require("@babel/traverse").default;
// 节点的处理类型以及判断等等
const t = require("@babel/types");
// 根据处理好的json格式代码在还原成js代码
const generator = require("@babel/generator").default;
// 读取你的需要操作的js代码
// const jscode = fs.readFileSync("./watchman.min2.js", {encoding: "utf-8"});
const jscode = fs.readFileSync("./get_ac.js", {encoding: "utf-8"});
// 引入你需要还原的js字符串list
const {str_list} = require('./ast_字符还原模型.js');

const ast = parse(jscode);


const visitor = {
    MemberExpression(path) {
        const {object, property} = path.node;
        // if (!t.identifier(object.type)) return;
        if (!t.isIdentifier(object) || !t.isNumericLiteral(property)) return;
        if (!str_list.hasOwnProperty(object.name)) return;
        // console.log(object.name,property.value)
        console.log(str_list[object.name][property.value]);
        try{
            path.replaceWith(t.valueToNode(str_list[object.name][property.value]))
        }catch{

        }
    },
    StringLiteral(path) {
        delete path.node.extra
    }

};

traverse(ast, visitor);

// 在还原回js
let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});

//写入新的js
fs.writeFile('reduction_core.js', code, (err) => {
});

最后放上我最喜欢的一打七

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

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

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

《某盾代码js版流程分析从无感到空间点选(最后一篇轨迹加密图标以及拼图和ast).doc》

下载本文的Word格式文档,以方便收藏与打印。