案例https://ctbpsp.com/#/

截至2025.07.19可用

定位加密位置

加密位置:

定位方式,XHR,跟栈 

跟栈 

QL打断点,重新断住

 分析为,一个函数传入四个参数

 var QL = QI[d9(Nv.mQ)](QJ, Qh, Qv, this[d9(Nv.m9)][0xa1a * 0x2 + -0xd2a + -0x35 * 0x22]);

QI[d9(Nv.mQ)]为函数

QJ,QH,QV, this[d9(Nv.m9)][0xa1a * 0x2 + -0xd2a + -0x35 * 0x22]为传入函数里的四个参数

进入函数

事实上这种传参方式特别常见,

基本就是函数传入几个参数,再传入一个函数 ,函数里面返回一个函数,函数的作用也是传入几个参数,一个函数,嵌套几层,最后的结果就是传入的函数,然后传入的参数给传入的函数传参。

有点乱

用python演示

def b(a,b):return a(b)
def hhh(h,a):return b(h,a)
def a(b):print(b)
hhh(a,3)

hhh(a,3)经过很多次调用最后执行a(3),这种网页调试里面很常见的(留个心眼),所以要不断进入函数内部。

简单来说就是一个函数调用传参本来可以直接用,非要嵌套几层函数再调用

最后不断进入函数,一共进入了四层

进入到一个控制流里面

控制流也特别常见,每一个分支打上断点,加密位置也就找到了。

接下来扣代码

混淆代码解释

这是一个混淆的JS代码,首先得扣三个主要

大数组函数或大数组,自执行方法,解密函数

不懂这些作用得请先参考JS逆向之JS混淆_js代码混淆-CSDN博客

大数组一般在js文件最上方

知道大数组叫 Q(),另外两个函数也容易找了

再解密函数里面必须调用大数组(不一定是传参,也可能是赋值)

所以很显然,a函数是解密函数 

解密函数后面要经过多次被调用(留个心眼),非常重要

接下来是自执行方法

事实上有两个 自执行函数,看被大数组Q被那个调用。(不一定是传参,也可能是赋值)

第一个坑

先把这三个关键函数扣下来,然后先运行试试,发现不断运行,结束不了。

这种情况一般有两种

一种是在循环里异常捕获,导致跳不出去循环,一种是定时器,定时运行

但是没有报window未定义,所以不是定时器的问题。所以只剩下异常捕获

这是这个网站的第一个坑

直接搜索try

很显然,死循环,手动输出异常是什么,m8,记得要break,不然输出死循环

结果是E2未定义

E2可以写死,383

补好E2,程序可以运行

扣代码 

混淆的代码主要扣对象,次要扣函数了

现在咱们可以肆无忌惮的扣代码了

G为定义,直接搜 

 

直接扣

直接定位搜索

a函数进入后发现解密函数,这很正常 ,在混淆代码里,解密函数多次被调用

 继续运行

 

直接扣下来。接下来基本都是缺对象了(呜呜呜)或者缺调用解密方法,缺什么补什么

但你补着补着,发现要补的对象还是很多的

仔细观察,你会把很多对象一把扣了。(这就是老辣的经验)

接下来分析

 Qk解释

经分析,Qk就是这么长一坨

Qk = mO[Um(ik.m8)](mO[Um(ik.m9)](mO[Um(ik.mm)](mO[Um(ik.mO)](mO[Um(ik.mQ)](Qk, '|'), mO[Um(ik.ma)](mE)), '|'), new Date()[Um(ik.mZ)]()), '|1');

 这就是对象嵌套对象调用对象属性,非常的绕,不过没事,咱们只扣对象

发现又是解密函数a

 发现另一个Qk

接下来又是喜闻乐见的扣对象,调用解密函数a 

 

传入参数是接口url未带加密参数的编码部分

最后差一个mE

 

第二个坑 (可有可无)

把mE补上,才发现,有第二个坑(事实上做第一次没有发现这个坑)

这两个Qv是不一样的,这个是0,补上出结果

完美收官 

最后封装

 对url进行编码

from urllib.parse import quote
encoded_url = quote(url, safe='')

直接出结果,最后是一串加密数据,非常简单的·DES解密。

这个网站详情有轨迹验证,请求多了有阿里滑块(我是菜鸡,解决不了一点)

总结

仅供学习!!!

扣混淆代码,先扣三个函数(大数组,自执行方法,解密函数)

自执行方法会调用大数组函数(不一定是传参,也可能是赋值)

解密函数也会调用大数组函数(不一定是传参,也可能是赋值)

仅供学习!!!

混淆代码跟栈经常会是喜闻乐见的函数嵌套函数传参函数,一步一步进去即可

仅供学习!!!

扣混淆代码以扣对象为主,次要扣函数。期间解密函数一直会被调用赋值

仅供学习!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/91995.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/91995.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/91995.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive常用命令总结

一、数据库操作 -- 创建数据库(默认路径) CREATE DATABASE IF NOT EXISTS myhive;-- 指定路径创建数据库 CREATE DATABASE myhive2 LOCATION /myhive2;-- 查看数据库信息 DESC DATABASE myhive;-- 删除数据库(强制删除表) DROP DA…

Spring整合MyBatis详解

Spring整合MyBatis详解一、整合优势与核心思路1.1 整合优势1.2 核心整合思路二、环境搭建与依赖配置2.1 开发环境2.2 Maven依赖配置三、整合配置(核心步骤)3.1 数据库配置文件(db.properties)3.2 Spring配置文件(sprin…

Windows CMD(命令提示符)中最常用的命令汇总和实战示例

CMD命令汇总 下面是 Windows CMD(命令提示符)中最常用的命令汇总,共 30 个,包含说明和典型代码示例,适合日常开发、系统操作、文件管理、网络诊断等场景。一、文件与目录操作(最常用)命令说明示…

嵌入式硬件篇---舵机(示波器)

舵机是一种高精度的角度控制执行器件,广泛应用于机器人、航模、自动化设备等领域。其核心特点是能通过控制信号精准定位到特定角度(通常范围为 0-180,部分可到 360 连续旋转)。常见的舵机类型可根据结构、控制方式、用途等维度划分…

嵌入式硬件篇---按键

按键是电子系统中最基础的人机交互部件,通过机械或电子方式实现电路通断或状态切换。根据结构和工作原理的不同,常见按键可分为机械按键、薄膜按键、触摸按键等,以下详细介绍其工作原理、应用场景及电路特点:一、机械按键&#xf…

试用SAP BTP 06:AI服务-Data Attribute Recommendation

创建实例 方法一:BTP主控室-子账户-服务市场 输入实例配置信息,下一步 不用参数,下一步 审核实例,点击创建 实例创建完成后,创建服务键值 输入键值名称,点击 创建 方法二(建议)&…

训诂学中的“形音义互求”对NLP、知识图谱、注意力机制的启示

一、训诂学与现代人工智能结合的学术价值与技术潜力1. ​​训诂学的核心优势与AI语义分析的契合点​​训诂学作为中国传统学术中研究古代文献语义的核心学科,其方法论和理论框架对自然语言处理(NLP)的深层语义分析具有深刻的启发性和技术补充…

http基础一

1. HTTP是什么? HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于从万维网服务器传输超文本到本地浏览器的协议。它是无状态的客户端-服务器协议,通常在Web浏览器和Web服务器之间用于传输网页、图片、视频…

西门子 S7-1500 系列 PLC CPU 选型全指南:从类型到实战

在西门子 S7-1500 系列 PLC 的系统构建中,CPU 作为核心控制单元,其选型直接决定了自动化系统的性能、功能扩展性和适用场景。本文将系统解析 S7-1500 系列 CPU 的类型划分、核心参数、典型型号功能及选型流程,助你精准匹配工业控制需求。一、…

PaddleOCR 与 PaddleX 调试

PaddleOCR 与 PaddleX 调试1.安装1.1 环境准备1.2用Conda创建虚拟环境2.测试2.1发票测试2.2 手写汉字识别3.PaddleOCR 与 PaddleX 对比3.1 基于 PaddleX 部署 OCR 服务1.安装 PP OCR 文档 1.1 环境准备 根据自己操作系统按网上指导安装 ccache ccache --version是否已安装 …

imx6ull-系统移植篇11——U-Boot 移植(下)

目录 前言 移植过程 添加开发板默认配置文件 添加开发板对应的头文件 添加开发板对应的板级文件夹 修改Makefile 文件 修改imximage.cfg 文件 修改Kconfig 文件 修改MAINTAINERS 文件 修改 U-Boot 图形界面配置文件 编译 uboot LCD 驱动修改 修改源文件 修改头文…

30天打牢数模基础-模拟退火算法讲解

二、完整Python代码 import random import mathdef rastrigin(x, y):"""二维Rastrigin函数(目标函数,需最小化)参数:x: 自变量xy: 自变量y返回:函数值f(x,y)"""return 20 x**2 y**2 …

论文阅读 - FastInst

文章目录1 概述2 模型说明2.1 总体架构2.2 轻量pixel decoder2.3 实例激活引导的Query2.4 双路径更新策略2.5 GT掩码引导学习2.6 损失函数3 效果1 概述 FastInst是一种基于query的实时实例分割方法,它能以32.5FPS的实时速度在COCO测试集上达到40.5的AP。在实例分割…

Elasticsearch 9.x 高可用集群部署教程(3 主节点 + 3 数据节点)

Elasticsearch 9.x 高可用集群部署教程(3 主节点 + 3 数据节点) 1. 集群架构规划 生产环境中的 Elasticsearch 集群需要高可用性和容错能力。以下是基于 3 主节点 + 3 数据节点的架构规划: 节点分布: 主节点(Master Nodes):3 台(master-node-1, master-node-2, maste…

Unity_通过鼠标点击屏幕移动屏幕里的一个对象

文章目录一、获取到点击物体的Tansform(摁下鼠标左键的瞬间)二、移动点击的物体(摁着鼠标左键不放)三、松开左键清理被移动对象属性总结注:本文章只是学习总结的笔记,视频链接 一、获取到点击物体的Tansfor…

UDP中的单播,多播,广播(代码实现)

文章目录1. UDP 单播(Unicast)示例2. UDP 广播(Broadcast)示例3. UDP 多播(Multicast)示例3.1 多播发送方示例3.2 多播接收方示例总结1. UDP 单播(Unicast)示例 发送方向指定单个目…

神经网络:卷积层

神经网络 卷积操作 例子: 输入:二维图像 [1,2,0,3,1] [0,1,2,3,1] [1,2,1,0,0] [5,2,3,1,1] [2,1,0,1,1] 卷积核: [1,2,1] [0,1,0] [2,1,0] 然后需要将输入图像和卷积核转化为4维张量 为什么转为4维张量?因为卷积操作需要输入图像…

2.4 组件间通信Props(父传子)

父组件 在父组件模板上的子组件上加上属性值&#xff0c;属性值就是想要传递给子组件的信息。 例如&#xff1a; <template> <div class"Big-box"><testBox :personList"p"></testBox> </div> </template>子组件 子组…

从零开始学习 Redux:React Native 项目中的状态管理

Redux 是一个用于 JavaScript 应用程序的状态管理库&#xff0c;通常与 React 或 React Native 配合使用&#xff0c;帮助管理应用的状态和数据流。其核心原理是通过集中式的“单一数据源”来管理应用状态&#xff0c;避免组件之间的“层层传递”状态和副作用。 Redux 的原理单…

[特殊字符] CentOS 7 离线安装 MySQL 5.7 实验

&#x1f427; CentOS 7 离线安装 MySQL 5.7 实验 针对企业无互联网环境的系统&#xff0c;设计了如何在 CentOS 7 系统中&#xff0c;使用一台可以联网的主机&#xff08;NodeA&#xff09;为另一台无法联网的主机&#xff08;NodeB&#xff09;安装 MySQL 5.7 数据库及其依赖…