某盾代码js版流程分析从无感到空间点选(最后一篇轨迹加密图标以及拼图和ast)
程序员文章站
2022-03-29 22:48:55
你只管努力,剩下的交给天意。文章只提供学习,如有侵权请立即联系我。前言先声明此文章只讲流程某盾的流程分析,而且某盾的跟新跟快,如果扣代码的话,会很快用不了,建议只看重点操作。某盾官网:官网总体来说某盾的验证码配合js总共分为四套还是前面的一样从这里开始一路向北然后在这里下断点,刷新再来然后就,找到了加密文字点选图标图形推理都是这个加密在这里扣就完事了最后再说一个加密不同的拼图下面是ast还原代码// 这是文件流const fs = require('fs');....
你只管努力,剩下的交给天意。
文章只提供学习,如有侵权请立即联系我。
前言先声明此文章只讲流程某盾的流程分析,而且某盾的跟新快,建议学习流程。
某盾官网:官网
总体来说某盾的验证码配合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