瑞数5.5逆向笔记(纯扣算法)

news2024/11/25 16:51:32

瑞数5解密

首先看请求,请求返回202大概率是(瑞数3,4).返回412是瑞数5

还可以看后缀值 MmEwMD=4xxxxx 就是4代瑞数,bX3Xf9nD=5xxxxx 就是5代瑞数

区别4带上来有1-2个无限debugger,这个直接过掉就好,还会有一个假cookie,5带没有

1.meta content 动态的每次请求都会变化(在eval执行到第二层js代码会用到)

2.外链js,内容固定的,自执行函数会解密文件内容生成eval执行时需要的JS源码

3.自执行函数,逻辑不会变,但是名称会变,主要是解密外链JS内容,给window添加一些属性如$_ts,会在vm中使用;

像下图这样,JS来源显示为VM+数字的形式,这就说明这些JS代码是后来加载进引擎的。

1.首先找到vm入口call调用的 正则入口:\S{4} = \S{4}[\S{4}[\d{2}]](\S{4}, \S{4})

2.进去hookcooki,找到cookie初始位置

cookie初始位置 正则入口:return \S{4}[.+] + \S{4} + \S{4}(\S{4}(\S{4}, \S{4}))

3.找到生成cookie函数的入口

下生断点,接着下日志断分析出4个参数的生成逻辑

第一个参数代表瑞数版本,不用分析

第二个参数,下日志断,生成位置

找到生成参数的逻辑,是由真假时间戳生成4个参数,生成一个16位数组,进行异或运算,转换成字符串来的

16位数组生成逻辑,正则入口;\S{4} = \S{4}([\S{4}, \S{4}, \S{4}, \S{4}])

第三个参数生成位置正则入口;return \S{4}[\S{4}[\d+]][\S{4}[\d+]][\S{4}[\d+]]([], \S{4});

把128位的大数组,去除空值,拆分成一个大数组(核心关键)

第三个参数的参数位置,正则入口\S{4}[\S{4}[\d+]](\S{4}, \S{4}.length - \S{4});

此处为去除128数组的空值

此处多开几次分析后得出 就0,1,6,7需要找出其逻辑,其他参数固定不变的,扣出即可

创建一个128位的空数组,下面表示起始位置0

128[0]的生成逻辑,_ 5 x 就是 w i n d o w . 5x就是window. 5x就是window._ts, 赋值层代码后续给出,这个就是window.$_ts的参数生成一个16位数组,是128[0]20位数组中的一部分

此处是取出window.$_ts的四个值生成一个4位数组,是组成128[0]的一部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhbtoCpl-1679590866003)(瑞数5解密.assets/image-20230323232152704.png)]

此处就是,16位数组拼接4位数组,生成128[0]的20位数组,这里面的难点在于4位数组,该4位数组的顺序和值的映射很重要,需要分析出映射关系,当你扣出代码时,会发现window.$_ts的4个值是4个参数,这时候就要跟栈分析出20位参数,找到对应关系.个人感觉这是这里面最难的,麻烦的

128[1]数组,这里的_$gM就是之前时间戳差值(这里注意一下,这里的插值和第2个参数用的是相同的,需要参数赋值固定)

128[6]位,找到入口

下日志段跟进去分析,下段技巧后面在分享

首先生成了一个16位数组,扣出即可

截取16位数组前4位生成128[6]

128[7]位,这里面需要多跟几遍,没啥技巧,我直接给出,我跟的流程,

这里下日志段找到的,分析找到在哪赋值的,下断点,单步跟进去,进到支循环在跟

这里面很乱,大小分支,多跟几遍到这里就好了,看下面输出,函数简单扣除即可,这个字符串要找到生成逻辑其实就是![]https://img-blog.csdnimg.cn/42600e1a343c4c9ba09d0188988a56ea.png)在这里插入图片描述

这里赋的值,扣除即可

参数找齐了

下面最后一位参数,这个参数是2个16位数组拼接而成

断点进去跟

生成一个32位数组

从32位数组中,抽出一个16位数组,是第4参数中的第一个16位数组

第二个16位数组

生成32位数组,参数齐了,有点乱,下面详细分析一遍

下面是赋值层分析

定义两个数组,下面是向数组赋值,关键,后续要常用

赋值window.$_ts,并清空,扣代码时,删除即可

读取content,扣代码时,直接填写进来就行了

20位key函数的映射关系,128[0]的后四位会用到

KaTeX parse error: Expected group after '_' at position 4: 5x._̲hT = $dY[KaTeX parse error: Expected group after '_' at position 4: 5x._̲hT](KaTeX parse error: Expected group after '_' at position 5: p2, _̲gM);这里是4为参数的生成逻辑,理解下就行了,补环境会用到

我这纯扣算法用不到,理解下就行了

这个分支生成了一个4位数组,充当第6位就是128[6]

此分支生成的真假时间戳,懒得放图了,

赋值层分析完毕

逆向分析,下面都是重点

_window. t s 初始值 , 和经过 i n d e x . j s 的 w i n d o w . _ts初始值,和经过index.js的_window. ts初始值,和经过index.jswindow._ts值

content读取,计算,vm入口

上面的两个大数组

一个填充的20位函数(生成128[0]中的4位数组关键)

一个生成第6位数组的分支,分支后面替换出扣出的代码即可

时间戳的分支(涉及到第二位参数,和128[1]数组)

128位数组

32位数组

下面是扣的一部分关键代码

需要替换

扣操作content时需要替换

这些都是之前赋值window.$_ts需要替换,第20位有可坑那个函数需要二次加载在能出来,要不会显示空

最后一点分享

插装输出的前提是,在每生成目标值之前,下日志,然后等执行输出日志结果然后分析

此图第一个参数是主分支,第二是支分支,后面两个是需要分析的参数,这样的好处是因为有的时候跟着跟着

就会找不到自己处在那个位置很容易跟丢,这样就不会很乱,所以大家下段最好学会用Watch

'索引1_KaTeX parse error: Expected group after '_' at position 5: ZX',_̲ZX,'索引2 _KaTeX parse error: Expected group after '_' at position 6: qQ', _̲qQ,'目标1 KaTeX parse error: Expected group after '_' at position 6: lI', _̲lI,‘参考’,$lE()

下日志断,不要图省事,写清楚不至于乱,最好弄个参考值,可以是时间戳啥的,这样知道自己是不是在主分支里,不至于跟丢


推荐无痕模式下,Script,还有在VM中逻辑不变,但是名称会变,这时候最好固定一套在本地分析,扣代码方便

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

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

相关文章

IDEA如何运行SSM项目(超详细图解)

📖本篇超级详细案例截图教学 IDEA如何运行SSM(Maven工程)项目,图片点击可放大仔细看 1、查看项目 项目里面一般会包含项目源码、数据库、环境配置教程、运行教程。 项目介绍文件有的是.md文件,这个需要记事本或者typora打开,wor…

【瑞吉外卖开发笔记】

瑞吉外卖开发笔记 源码地址 一、业务开发Day01 1、软件开发整体介绍 软件开发流程 角色分工 软件环境 2、瑞奇外卖项目介绍 项目介绍 产品原型展示 技术选型 功能架构 角色 3、环境搭建 开发环境搭建 数据库环境搭建 运行对应db_reggie.sql文件Maven项目搭建 新建Springb…

毫米波雷达(mmWave)基本原理

1. 引言 毫米波(mmWave)是一种特殊的雷达技术,它使用短波长的电磁波。雷达系统发射电磁波信号,然后其路径上的物体将它反射回去。通过捕捉反射信号,雷达系统可以确定目标的距离、速度和角度。毫米波雷达发射的信号波长…

函数(2)

文章目录 6. 函数的嵌套调用和链式访问6.1 嵌套调用6.2 链式访问 7. 函数的声明和定义7.1 函数声明7.2 函数定义 8. 函数递归8.1 什么是递归8.2 递归的两个必要条件8.3 递归与迭代 附&#xff1a; 6. 函数的嵌套调用和链式访问 6.1 嵌套调用 #include <stdio.h>int tes…

基于Python的学生成绩管理系统

末尾获取源码 开发语言&#xff1a;python 后端框架&#xff1a;django 数据库&#xff1a;MySQL5.7 开发软件&#xff1a;Pycharm 是否Maven项目&#xff1a;是 目录 一、项目简介 二、系统功能 三、系统项目截图 四、核心代码 4.1登录相关 4.2文件上传 4.3封装 一、项…

12.软考——数据流图

数据流图分层 数据字典 数据流图平衡原则 考试必问根据顶层数据流图补充0层数据流图中缺失的数据流图。 1.父图与子图之间的平衡 主要看系统和外部的联系是否缺失,比如上图数据管理中间件--------->前端应用中的处理后的操作结果这个数据流缺失。 2.子图内平衡 正常的加…

1123 Is It a Complete AVL Tree(72行代码+超详细注释)

1123 Is It a Complete AVL Tree 分数 30 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by…

【原创】ChatGPT访问及内容安全技术设计

作者&#xff1a;黑夜路人 时间&#xff1a;2023/5/15 作为爆火的AIGC产品ChatGPT&#xff0c;以及类似的产品 Cluade、Bard、Newbing 等等&#xff0c;让大家趋之若鹜&#xff0c;如何把这些产品映射到自己的业务产品中&#xff0c;也是很多开发者需要面对的问题。 针对AIGC&…

Prompt工程师指南[从基础到进阶篇]:用于开发和优化提示,以有效地使用语言模型(LMs)进行各种应用和研究主题

Prompt工程师指南[从基础到进阶篇]&#xff1a;用于开发和优化提示&#xff0c;以有效地使用语言模型&#xff08;LMs&#xff09;进行各种应用和研究主题 Prompt工程是一种相对较新的学科&#xff0c;用于开发和优化提示&#xff0c;以有效地使用语言模型&#xff08;LMs&…

基于卷积的图像分类识别(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…

LitCTF2023 Reverse 题解及复现

文章目录 一.enbase641.main函数2.换表函数3. check函数4. 解题脚本: 二.snake1. 修复MagicNumber2. 反编译3. 解题脚本 三.For Aiur1. 注意点2. 解包3. 反编译4. 解题脚本 四.程序和人有一个能跑就行了1. fakeflag2. 真flag 五.debase641. encode函数2. 函数逻辑3. 根据程序逻…

PCIe事务层(详细)总结-PCIe专题知识(六)

目录 前言一、简介二、事务层数据传输三、数据格式四、其他相关链接1、PCIe物理层总结-PCIE专题知识&#xff08;一&#xff09;2、PCIe数据链路层图文总结-PCIe专题知识&#xff08;二&#xff09;3、PCIe物理层链路训练和初始化总结-PCIe专题知识&#xff08;三&#xff09;4…

SpringCloud:微服务保护之规则持久化

现在&#xff0c;sentinel的所有规则都是内存存储&#xff0c;重启后所有规则都会丢失。在生产环境下&#xff0c;我们必须确保这些规则的持久化&#xff0c;避免丢失。 1.规则管理模式 规则是否能持久化&#xff0c;取决于规则管理模式&#xff0c;sentinel支持三种规则管理…

基于卷积的图像分类识别(一):AlexNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…

机器学习中的监督学习、无监督学习、半监督学习和强化学习,这四种学习方式到底有啥区别?

监督学习、无监督学习、半监督学习和强化学习 人工智能中的机器学习是指让计算机通过学习数据的方式改善性能。在机器学习中&#xff0c;有四种主要的学习方式&#xff1a;监督学习、无监督学习、半监督学习和强化学习。本文将详细介绍这四种学习方式的概念、应用和优缺点。 …

[GXYCTF2019]BabyUpload1

上传文件后提示后缀名不能有ph 那估计都是黑名单过滤&#xff0c;大小写绕过也不行&#xff0c;尝试一下上传.htaccess文件 将文件名称为abc的当做php文件执行 上传后提示上传类型露骨&#xff0c;说明绕过了黑名单但是还有content_type类型坐镇 那就利用burp抓包修改content—…

msvcp140.dll丢失怎样修复,总结4个msvcp140.dll丢失的修复方法

今天早上打开photoshop的时候&#xff0c;电脑突然提示由于找不到msvcp140.dll&#xff0c;无法继续执行此代码&#xff0c;一时间都懵了&#xff0c;不知道怎么处理。在网上找了一上午的资料及修复方法&#xff0c;MSVCP140.dll是一个非常重要的Windows系统文件&#xff0c;它…

win10 平台搭建react native 并在 Android模拟器上运行app

目录 1 安装npm 1.1 nodejs官网下载 安装程序&#xff0c;双击安装&#xff0c;一路点“是"即可 1.2 增加三个环境变量 NODE_PATH NVM_HOME NVM_SYMLINK 1.3 在PATH中增加 %NVM_HOME% %NVM_SYMLINK% 2 安装yarn 3 安装java 11.0.2 3.1 安装…

Unity 矩阵简介

前言&#xff1a;与向量一样&#xff0c;矩阵也是3D数学的基础。要正确进行物体的位移、旋转和缩放变换&#xff0c;就必须要用到矩阵。 3D游戏中的向量一般只有3个维度&#xff0c;但矩阵要使用44矩阵&#xff0c;主要原因你是要用矩阵实现平移&#xff0c;33矩阵是不够的。4…

C++类和对象下

专栏&#xff1a;C/C 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本章为大家带来C类和对象相关内容。 类和对象下 类的默认成员函数构造函数析构函数拷贝构造函数运算符重载 const成员再谈构造函数构造函数体赋值初始值列表 explicit关键字static成员友元内部类匿名对象…