某美动态参数对抗思路

简介: 某美动态参数对抗思路
目标网址:aHR0cHM6Ly93d3cuaXNodW1laS5jb20vdHJpYWwvY2FwdGNoYS5odG1s

观前提示:

本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除


0x1 某美滑块

玩过的朋友们都知道 某美的滑块在算法上基本都没怎么更新 但是在参数名上更新的比较频繁

在140左右的版本中 受混淆的帮助 可以很好的匹配出对应的参数名

(function(a1,a2,a3){
xxx(a1);
xxx(a2);
xxx(a3);
}('a1','a2','a3'))

因为出现的位置也相对固定 所以 只需要找到一个固定值 便可以通过数组偏移找到我们所需的参数名和对应的key值

直到发文为止 目前版本已经来到了155 加密也变成了类似于ob的类型

因为部分字段被混淆 所以单纯的正则并不能很好的匹配出所需要的参数名和key

此时 AST的用处就来了

0x2 v佬打包的babel库

实现免安装 直接用!

v佬的github:https://github.com/cilame/v_jstools

蔡老板的使用示例:https://github.com/Tsaiboss/decodeObfuscator

0x3 动态更新对抗

拿到某美的js代码 通过观察感觉和ob没啥区别 就变了一点

总体来说 只需要还原 _0x1d76f7(****)和object混淆部分即可

大家应该都会吧 不会的自己找蔡老板进修一下

值得一提的是 object部分有套娃 可能需要还原2次

还原好的结果就是

对比一下还原前

还原到这个地步 就已经可以达到取值的目的了

先找到我们要取值的地方

第一处

第二处

现在用正则匹配出我们需要的参数名和key就简单很多

但是这里 我还是选择使用AST来匹配

只需要进行简单的判断即可

"CallExpression"(path){
    var {arguments}=path.node;
        if(arguments.length!=3)return;
        if(!types.isLiteral(arguments[1]) || !types.isCallExpression(arguments[2]))return;
        var key=arguments[1].value;
        var {callee,arguments}=arguments[2];
        if(!types.isMemberExpression(callee))return;
        if(!types.isThisExpression(callee.object))return;
        if(callee.property.value!='getEncryptContent')return;
        var key_value=arguments[1].value;
        ....
    }   
}
"AssignmentExpression"(path){
    var {left,right}=path.node;
    var {callee,arguments}=right;
    if(!types.isMemberExpression(callee))return;
    var {object,property}=callee;
    if(!types.isThisExpression(object))return;
    if(property.value!='getEncryptContent')return;
    if(arguments.length!=2)return;
    var key_value=arguments[1].value;
    var {property}=left;
    var key=property.value;
    ....
}

取出值保存下来后 因为逻辑顺序不会变 所以取出来的顺序也不会变

后续使用只需要在固定的位置填入对应位置的值就可以了

0x4 实战效果

一下子就省心很多 再也不用每次更新都去手动更新了

得益于v佬的免安装babel 不用每次换电脑都安装一次babel了



感谢各位大佬观看

共同进步 共同学习

如有错误 还请大佬们指出



[完]

相关文章
|
1月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
1月前
|
机器学习/深度学习 人工智能 算法
从数据增强的隐藏作用出发,揭示视觉强化学习可塑性损失的独特机制
【10月更文挑战第22天】视觉强化学习(VRL)通过智能体与环境的交互学习最优策略,但可塑性损失是其关键挑战。近期一篇论文《Revisiting Plasticity in Visual Reinforcement Learning: Data, Modules and Training Stages》通过实证研究,揭示了数据增强、评论家可塑性损失及早期干预在维持智能体可塑性方面的作用,并提出了一种动态调整重放率的方法,为解决高重放率困境提供了新思路。
46 2
|
2月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
537 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
|
2月前
|
人工智能 人机交互 智能硬件
从大模型的原理到提示词优化
本文介绍了大语言模型(LLM)的基本概念及其工作原理,重点探讨了AI提示词(Prompt)的重要性和几种有效技巧,包括角色设定、One-shot/Few-shot、任务拆解和思维链。通过实例解析,展示了如何利用这些技巧提升LLM的输出质量和准确性,强调了提供高质量上下文信息对优化LLM表现的关键作用。
84 0
|
4月前
|
JavaScript 前端开发
深度解析 new 原理及模拟实现
【8月更文挑战第1天】 深度解析 new 原理及模拟实现
52 0
|
7月前
|
机器学习/深度学习 人工智能 算法
深度探究自适应学习率调整策略在深度学习优化中的影响
【5月更文挑战第25天】 随着深度学习模型的复杂性逐渐增加,传统的固定学习率方法已不足以满足高效训练的需求。自适应学习率调整策略应运而生,通过动态调整学习率以加速收敛过程并提高模型性能。本文深入分析了几种主流的自适应学习率方法,包括Adam、RMSprop和AdaGrad等,并探讨了它们在不同深度学习场景中的应用效果。通过对比实验结果,我们揭示了这些策略在处理不同问题时的优势与局限,为未来深度学习优化算法的选择提供了理论依据。
|
7月前
|
机器学习/深度学习 自然语言处理 算法
深度解析预训练权重的本质和作用
深度解析预训练权重的本质和作用
294 1
|
7月前
|
算法
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
|
机器学习/深度学习 人工智能 算法
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
|
监控
【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)
【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)