初试jsvmp加密

news2024/11/28 18:44:50
分析目标
  • 目标网站 腾讯的点选验证码(我这边是本地环境,所以没有网址)

  • 目标参数 cap_union_new_verify.collect

  • 目标js文件 tdc.js?app_data=

流程分析(分析算法)

我们打开我们要分析的网站,过一下点选验证码,抓一包,可以得到

https://turing.captcha.qcloud.com/cap_union_new_verify

这个就是发送验证码验证的包,其中collect就是我们要分析的参数。collect里面就是验证一些环境相关的东西

至于collect,我们搜索一下,定位一下,可以找到tdc.js这个文件里面。

分析js文件

我们将tdc.js下载下来,拿到node环境里面进行分析。用jsdom补一下环境,让js能再js里面跑起来

const jsdom = require("jsdom");

const { JSDOM } = jsdom;
const jsDomIntance = new JSDOM(`
    <!DOCTYPE html>
    <body>
      <p id="root">hello,world</p>
    </body>
    
    `
    )
  const window = jsDomIntance.window; // window 对象
  const document = window.document; // document 对象 

再最后加上调用函数。

window.TDC.setData({ft:"qf_7P___H"});
function get2() {
return decodeURIComponent(window.TDC.getData(!0))
};

console.log(get2());

可以拿到输出

图片


接下来分析一下js,现将js一些函数折叠起来,方便分析。

图片

这个C是一个指令数组,里面放的都是一些函数,根据传入的操作码来进行一些操作,比如加减乘除,异或等等其他操作。我们再往下看看

图片

W = C[y[g++]]();

这行代码就是从操作码数组里面取出操作码,再根据操作码到C数组里面找到对应函数进行执行。g从0开始,y就是操作码数组。

图片

这个__TENCENT_CHAOS_VM函数接受三个参数,0,操作码数组和window属性。操作码数组是由function(A)函数生成的,function(A)函数里面有两个大数组,根据这两个大数组生成操作码数组。

我们打开C指令数组里面看看。

图片

出现最多的就是i,可以得到i就是堆栈。我们再C指令数组之前加一些操作。

图片

hook一下i堆栈的pop方法,让每一次pop都讲参数输出出来。

图片

得到结果大概是这样的,这样有助我们分析。

我们继续hook一下里面的apply方法,让里面执行函数,都输出结果和参数。

图片

有两个地方的apply,都需要hook一下,拿到参数和结果。方便后期逆向算法。

图片

输出结果如图,我们找到大概开始加密的地方。看到堆栈的pop输出和函数调用和输出是啥。根据这些结果。再我们上面hook的地方加一些限制条件,比如,当res的pop结果为{"cd"才输出并debugger。避免输出结果太多。影响分析。

继续分析,我们可以得到collect值大致加密流程:将原始文本拆成四部分。每一份从中截取四个字符,变成两个数字,组成一个数组,再从数组取出大数字进行加密,再将加密的数字生成四个数字组成数组,再将数组。通过fromCharCode函数变成字符串。最后将字符串进行base64编码并进行拼接。就是最终结果了。

图片

最后

参考文章:企鹅滑块collect参数逆向思路 - 知乎 (zhihu.com)

腾讯滑块collect分析_y小白的笔记的博客-CSDN博客

兴趣交流群:835342318

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防雷工程中防雷接地网的应用方案

防雷接地是指在建筑物或其他设施中设置专门的接地装置&#xff0c;以防止雷电对人员、设备和建筑物造成危害的措施。防雷接地工程是防雷工程的重要组成部分&#xff0c;其主要目的是将雷电电流引入大地&#xff0c;消除雷电过电压&#xff0c;降低雷电危险。防雷接地工程应遵循…

BackgroudWork的详细用法,实例

一、什么是BackgroudWorker? 1、简言 backgroudworkd就是一个异步单线程&#xff0c;专门为入门级人员开发的。还可以显示进度条。操作简单实用,属于老技术。 注意&#xff1a;如果调用两次这个线程&#xff0c;将会出错。 2、backgroudwor…

centos7下docker设置新的下载镜像源并调整存放docker下载镜像的仓库位置

目录 1.设置镜像源 2.调整存放下载镜像的仓库位置 1.设置镜像源 在 /etc/docker下创建一个daemon.json文件。在json中下入 "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] 完成配置 加载配置 systemctl daemon-reload 重启docker sy…

医学影像工作站PACS系统源码,医院PACS系统源码

医学影像(PACS)系统主要进行病人信息和影像的获取、处理、存储、调阅、检索、管理&#xff0c;并通过网络向全院提供病人检查影像及诊断报告&#xff1b;各影像科室之间共享不同设备的病人检查影像及诊断报告&#xff1b;在诊断工作站上&#xff0c;调阅HIS中病人的其它信息&am…

企业架构LNMP学习笔记13

上线商城项目&#xff1a; 1&#xff09;上传项目文件到数据库&#xff1a; 入口文件位置的设计是为了让应用部署更安全&#xff0c;public目录为web可访问目录&#xff0c;其他的文件都可以放到非web访问目录下面。 nginx 默认访问index.html。没有index.html&#xff0c;就会…

软路由ip的优势与劣势:了解其适用场景和限制

在网络技术的快速发展中&#xff0c;软路由IP作为一种灵活且功能强大的网络设备&#xff0c;越来越受到人们的关注。然而&#xff0c;正如任何技术一样&#xff0c;软路由IP也有其优势和劣势。本文将深入探讨软路由IP的优势、劣势以及其适用场景和限制&#xff0c;帮助你更好地…

【回眸】牛客网刷刷刷!(八)——中断专题

目录 前言 1、在CortexM内核中&#xff0c;当系统响应一个中断时 2、用与非门和或非门可以实现其他基本门电路。进而实现任何逻辑电路 3、cpu interface提供了功能包含 4、以Cortex-M3内核为例&#xff0c;如果某个中断在得到响应之前&#xff0c;其请求信号以若干的脉冲的…

kafka-- 安装kafka manager及简单使用

一 、安装kafka manager 管控台&#xff1a; # 安装kafka manager 管控台&#xff1a; ## 上传 cd /usr/local/software ## 解压 unzip kafka-manager-2.0.0.2.zip -d /usr/local/ cd /usr/local/kafka-manager-2.0.0.2/conf vim /usr/local/kafka-manager-2.0.0.2/conf/appl…

MySql学习笔记03——DQL(数据查询)基本命令

DQL 导入数据 首先使用use database进入数据库中&#xff0c;然后使用命令 source D:\mysql_learning\mysql_learning\document\bjpowernode.sql注意文件名不能有双引号&#xff0c;命令结尾没有分号。 SQL脚本 .sql文件是SQL脚本文件&#xff0c;它里面的内容都是SQL语句…

个人炒伦敦银方法大公开

个人炒伦敦银的方法与机构投资者炒这个品种的方法是有不同的&#xff0c;但是双方可能会借鉴一些相同的分析工具&#xff0c;比方说有的机构可能也会使用技术分析&#xff0c;当然&#xff0c;个人投资者对技术分析这个词更是不会陌生。今天我们就从个人投资者的角度出发&#…

计算机竞赛 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

8、异常机制---- 8.1 Error和Exception

8、异常机制 8.1 Error和Exception 什么是异常 在实际工作中&#xff0c;遇到的情况不可能是非常完美的。比如&#xff1a;你写的某个模块&#xff0c;用户输入不一定符合你的要求、你的程序要打开某个文件&#xff0c;这个文件可能不存在或者文件格式不对&#xff0c;你要读…

23. 带旋转的数独游戏

题目 Description 数独是一个基于逻辑的组合数字放置拼图&#xff0c;在世界各地都很受欢迎。 在这个问题上&#xff0c;让我们关注 网格的拼图&#xff0c;其中包含 个区域。 目标是用十六进制数字填充整个网格&#xff0c;即 &#xff0c;以便每列&#xff0c;每行和每个区…

ABB机器人20032转数计数器未更新故障报警处理方法

ABB机器人20032转数计数器未更新故障报警处理方法 ABB的机器人上面安装有电池,需要定期进行更换(正常一年换一次),如果长时间不更换,电量过低,就会出现转数计数器未更新的报警,各轴编码器的位置就会丢失,在更换新电池后,需要更新转数计数器。 具体步骤如下: 先用手动…

泛微OA流程表单中代码块获取URL的参数

获取URL的参数 需要编辑自定义函数 function getUrlParam(key){var url decodeURI(window.location.href);var paramMap {};var paramStr url.split("?")[2];if (paramStr && paramStr ! "") {var paramStrArr paramStr.split("&&qu…

客户忠诚度和保留率:不良方法的陷阱

良好的客户忠诚度和保留策略是任何电子商务业务成功的关键因素。但当出现问题时会发生什么&#xff1f;您可以采取哪些措施来鼓励忠诚度并减少客户流失&#xff1f;继续阅读以了解不良客户忠诚度和保留实践的后果。 忠诚度和保留率低下的后果 客户不满意和高流失率 客户忠诚…

直播软件app开发中的AI应用及前景展望

在当今数字化时代&#xff0c;直播市场蓬勃发展&#xff0c;而直播软件App成为人们获取实时信息和娱乐的重要渠道。随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;直播软件App开发正逐渐融入AI的应用&#xff0c;为用户带来更智能、更个性化的直播体验。 …

什么是高压放大器

高压放大器是一种用于放大高电压信号的电子设备。它主要用于需要处理高电压信号的应用&#xff0c;如电力系统、医疗设备、科学研究以及工业和实验室实验等领域。下面将详细介绍高压放大器的原理、特点和应用。 高压放大器的原理基于电子放大技术&#xff0c;通过输入信号放大电…

国腾GM8284DD 将高速串行 LVDS 信号解码为并行 TTL 数据

国腾GM8284DD 1.描述&#xff1a; GM8284C 型 28 位可编程数据选通接收器主要用于视频/图像传输中的接收部分&#xff0c;实现 的功能是将高速串行 LVDS 信号解码为并行 TTL 数据&#xff0c;完成数据的解码功能。该器件可将 4 对串行 LVDS 差分信号在时钟信号作用下…

Java 加了@PreAuthorize注解的接口在Postman中访问

1. 首先&#xff0c;你需要获取一个有效的用户token&#xff0c;该token应包含了相应的接口权限。你可以通过登录或其他身份验证方式来获取token。2. 打开Postman&#xff0c;并确保已选择正确的HTTP方法&#xff08;GET、POST等&#xff09;。3. 在请求的Headers部分&#xff…