_Incapsula_Resource与Rc4混淆分析

一、获得混淆js

这么一个地址
https://www.interasia.cc/_Incapsula_Resource?SWJIYLWA=5074a744e2e3d891814e9a2dace20bd4,719d34d31c8e3a6e6fffd425f7e032f3

浏览器打开这个地址

在这里插入图片描述
复制这个js,到浏览器调试

在这里插入图片描述
先格式化查看,也就是一个eval函数执行b函数

在这里插入图片描述
打上断点(如果打不上断点的,crtl+s 保存文件,然后先执行一遍)

在这里插入图片描述
再次打断点,点进运行,进入到VM代码,就是一个OB混淆

在这里插入图片描述

把这个js代码,随便复制到一个新文件

二、分析JS

(1)格式化检测

从eval直接运行VM

可以看到很顺畅,没有一点卡顿,直接运行完所有,并且没有报错信息

请添加图片描述

从复制的文件运行代码

等待了一段时间出现错误

在这里插入图片描述

(2)格式化检测处理

在这里插入图片描述

这个是一个函数,定义了2个大数组,并且有自执行函数,选择合适位置打上断点分析,从这这个代码看到是顺序执行,我打上如下断点

在这里插入图片描述
运行调试,先执行了一个大数组生成,下面红框的函数是啥?

在这里插入图片描述

将红框的函数复制到 ob混淆解锁工具,如下图

https://lelinhtinh.github.io/de4js/

下图看到是对cookies的一个操作,并且使用了test,和toString 的方法,对removecookies这个方法进行格式化检测

那么这个 _0xf7ae1e 是这个方法的函数主体

在这里插入图片描述

 通过这个变量承载函数_0x13ab73['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65'] = _0xf7ae1e;_0x5d6155  将函数调用进行执行var _0x5d6155 = _0x13ab73['\x75\x70\x64\x61\x74\x65\x43\x6f\x6f\x6b\x69\x65']();

再此处打上断点,查看 ,在没有去格式化的情况看这个值的结果如何,可以看到为false

在这里插入图片描述
将代码格式化去掉

在这里插入图片描述改成一行,在重新执行js,可以看到输出为True

在这里插入图片描述

关于格式化检测,如果不确定多少处,可以改一处,执行一次代码,看看是否还会出错,或者卡死,通过配合断点夹断方法,逐步确认什么函数,什么区域卡死或者报错

全局搜索 test,toString,RegExp 进行更改,本JS,搜索出来有10个地方

关于解决方法,可以通过调试状态下,在控制台,查看这些混淆代码,对应的函数主题需要进行格式化处理

在这里插入图片描述

想上面的第一个自执行函数处理完成后,调试可以正常走到下一个断点的,初步说明处理完毕

在这里插入图片描述

也可以将整个js文件,丢到上面工具网站,还原部分名称,进行修改,这里省略处理格式化检测过程

(3)Rc4 算法

将 _0x9897到工具看看怎么个事~
在这里插入图片描述

明显的Rc4算法

在这里插入图片描述

这段代码实现了 RC4 算法,是一种流加密算法。RC4(Rivest Cipher 4)是由 Ronald Rivest 设计的一种对称密钥算法,常用于加密通信中的数据流。它基于一个密钥流生成算法,通过对明文逐字节进行异或操作,实现对数据的加密和解密。

在这段代码中,有两个主要函数:

_0x9897: 这是 RC4 算法的主函数,接受两个参数 _0x2db912 和 _0x1c0add,其中 _0x2db912 是密钥,而 _0x1c0add 是需要加密/解密的数据。它使用了一个自执行的匿名函数,其中包含 RC4 算法的核心逻辑。
_0x3cdff9: 这个函数是 RC4 算法的核心,它接受两个参数 _0x384756_0x407419,其中 _0x384756 是需要加密/解密的数据,而 _0x407419 是密钥。该函数首先对密钥进行处理,然后通过对明文逐字节进行 RC4 算法的异或操作,得到加密或解密后的结果。

用JavaScript写一个简单样例

function rc4(key, input) {// 初始化阶段let S = [];for (let i = 0; i < 256; i++) {S[i] = i;}// 密钥调度阶段let j = 0;for (let i = 0; i < 256; i++) {j = (j + S[i] + key.charCodeAt(i % key.length)) % 256;// 交换 S[i] 和 S[j]const temp = S[i];S[i] = S[j];S[j] = temp;}// 伪随机生成阶段let i = 0;j = 0;let output = '';for (let k = 0; k < input.length; k++) {i = (i + 1) % 256;j = (j + S[i]) % 256;// 交换 S[i] 和 S[j]const temp = S[i];S[i] = S[j];S[j] = temp;const K = S[(S[i] + S[j]) % 256];// 异或运算output += String.fromCharCode(input.charCodeAt(k) ^ K);}return output;
}// 示例
const key = 'SecretKey';
const plaintext = 'Hello, RC4!';
const ciphertext = rc4(key, plaintext);
console.log('Plaintext:', plaintext);
console.log('Ciphertext:', ciphertext);// 解密
const decryptedText = rc4(key, ciphertext);
console.log('Decrypted Text:', decryptedText);

关于rc4算法更多

https://blog.51cto.com/u_15301988/3089450

RC4(Rivest Cipher 4),也称为Ron’s Code 4,是一种流密码(stream cipher)算法。它是由Ron Rivest在1987年设计的,用于在计算机通信中提供保密性。

RC4的特点是简单、高效,适用于资源受限的环境。它属于对称密钥算法,意味着相同的密钥用于加密和解密。以下是RC4算法的基本思想和步骤:

初始化阶段:

使用一个变量数组S(通常为256字节)作为状态向量。
初始化S数组,这通常是通过将其填充为0到255的整数序列。

密钥调度阶段:

将密钥(通常是8至256位长)按字节加入到S数组中。
通过多次迭代和交换S数组中的元素来增强密钥的随机性。

伪随机生成阶段:

利用初始化和密钥调度阶段构造的S数组,生成伪随机流。
将伪随机流与明文进行异或运算,得到密文。

加密过程:

对每个明文字节,使用伪随机生成的流进行异或运算。

三、处理

在rc4 算法函数观察值

在这里插入图片描述

出来结果

在这里插入图片描述

那么解决方法
在这里插入图片描述
继续内部读点调试
在这里插入图片描述

剩下的方法就很多了,封装SDK,算法还原都可以

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

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

相关文章

base64 图片进行编码、解码;api调用

1、base64 图片进行编码、解码 编码 import base64# 假设您有一个图像文件&#xff0c;例如 image.jpg with open(r"C:\Users\l****1686722996428308480-1 (1).jpg", rb) as image_file:# 读取图像文件的二进制数据image_data image_file.read()# 将二进制数据编码…

C语言基础语法跟练

题源&#xff1a;牛客网 1、输出"Hello Nowcoder!"。开始你的编程之旅吧。 #include <stdio.h>int main() {printf("Hello Nowcoder!");return 0; } 2、KiKi学会了printf在屏幕输出信息&#xff0c;他想输出一架小飞机。请帮他编写程序输出这架小…

超实用的 Python 库之lxml使用详解

概要 XML&#xff08;可扩展标记语言&#xff09;和HTML&#xff08;超文本标记语言&#xff09;是广泛用于数据交换和网页构建的标记语言。在Python中&#xff0c;有许多库可以用来解析和处理XML和HTML文档&#xff0c;其中最强大和常用的之一是lxml。lxml是一个高性能、功能…

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测&#xff08;完整源码和…

spring-mvc数据绑定和表单标签库(介绍)

spring-mvc数据绑定和表单标签库 1. WEB-INF下页面跳转2. ModelAttribute来注解非请求处理方法3. 表单标签4. 其他标签5. IDEA tomcat控制台中文乱码问题处理 1. WEB-INF下页面跳转 容器启动后&#xff0c;如何默认显示web-inf目录下的系统首页。 2. ModelAttribute来注解非…

设计模式-空对象模式

设计模式专栏 模式介绍模式特点应用场景空对象模式和单例模式的区别代码示例Java实现空对象模式Python实现空对象模式 空对象模式在spring中的应用 模式介绍 空对象模式是一种设计模式&#xff0c;用于处理对象不存在的情况。它通过返回一个空对象来代替 null 值&#xff0c;从…

flutter 配置安卓的签名

背景 最近遇到一个需求&#xff0c;需要实现app的热更新,了解了一下热更新方案时间的时间有点久&#xff0c;就做了个app升级的过渡版本&#xff0c;然后遇到问题 真机安装遇到签名不一致的问题 如下 安装过程 版本升级的代码如下 ///版本更新检查static Future<VersionEnti…

冲刺2024年AMC8竞赛:往年真题练一练和答案详解(3)

今天我们继续来做一做往年的AMC8真题&#xff0c;通过高质量的真题来体会我们所学的知识如何解题&#xff0c;建立快速思考、做对题目的策略。 今天分享的五道题目仍然是随机从六分成长独家制作的575道在线题库&#xff08;来自于往年真题&#xff09;中抽取5道题来做一下&…

Parallel patterns: convolution —— An introduction to stencil computation

在接下来的几章中&#xff0c;我们将讨论一组重要的并行计算模式。这些模式是许多并行应用中出现的广泛并行算法的基础。我们将从卷积开始&#xff0c;这是一种流行的阵列操作&#xff0c;以各种形式用于信号处理、数字记录、图像处理、视频处理和计算机视觉。在这些应用领域&a…

Linux环境变量LD_LIBRARY_PATH配置

解决snmpwalk报错 报错提示&#xff1a;./bin/snmpwalk:error while loading shared libraries:libnetsnmp.so.40:cannot open shared object file: No such file or directory. 环境变量LD_LIBRARY_PATH LD_LIBRARY_PATH是Linux环境变量名&#xff0c;该环境变量主要用于指…

基于ChatGPT4+Python近红外光谱数据分析及机器学习与深度学习建模

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年4月&#xff0c;更强版本的ChatGPT4.0上线&#xff0c;文本、语音、图像等多模态交互方式使其在…

Java泛型:灵活多变的类型参数化工具

&#x1f451;专栏内容&#xff1a;Java⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、泛型1、什么是泛型2、泛型的语法 二、泛型类的使用1、泛型类的语法2、泛型如何编译的2.1、擦除机制2.2、为什么不能实例化泛…

控制el-table的列显示隐藏

控制el-table的列显示隐藏&#xff0c;一般的话可以通过循环来实现&#xff0c;但是假如业务及页面比较复杂的话&#xff0c;list数组循环并不好用。 在我们的页面中el-table-column是固定的&#xff0c;因为现在是对现有的进行维护和迭代更新。 对需要控制列显示隐藏的页面进…

Queue接口分析

一、Queue是什么 该接口是Java集合框架成员 Queue&#xff1a; 通常&#xff08;但不一定&#xff09;队列就是一个先入先出&#xff08;FIFO&#xff09;的数据结构&#xff0c;和堆一样&#xff08;但可以进行转换&#xff0c;比如优先级列队排序&#xff0c;又或者改为栈形…

私域爆款活动实操指南,让你轻松成为营销高手!

私域运营活动是公司运营中非常重要的一环&#xff0c;它能够提高用户参与度、增加用户忠诚度&#xff0c;并为公司带来更多的商业机会。然而&#xff0c;策划和执行一场成功的私域运营活动并不容易&#xff0c;需要思维缜密、部门合作以及落地能力等方面的综合素养。今天来跟大…

centos下升级git版本

1 问题描述 centos7系统默认的git安装版本是1.8&#xff0c;但是在项目构建中发现git版本过低&#xff0c;导致构建AI模型环境时出现各种错误&#xff0c;于是用源码编译的方式进行升级&#xff0c;同时该文章也适用于安装新的git。 2. 升级安装 2.1 第一步卸载原有的git r…

怎么把视频设置为电脑桌面

1、打开腾讯软件中心&#xff0c;搜索并下载【火萤视频桌面】&#xff0c;不要安装&#xff08;因为卸载会出错&#xff09;。 2、找到下载的火萤视频桌面exe程序&#xff0c;以【打开压缩包】的方式打开&#xff0c;把其中的WPengine文件夹解压到桌面。 3、双击打开WPengine…

亚信安全深度解读2023年中国网络安全重要政策法规

亚信安全在对2023年国内网络安全政策的持续跟踪和研究基础上进行了详细分析。观察整体态势&#xff0c;本年度网络安全政策的发布呈现出高密度特征&#xff0c;共计引起行业高度关注的政策达50余项。数据安全领域、个人信息保护和数据跨境安全成为关注的热点&#xff0c;分别有…

Java面试之并发篇(一)

1、前言 本篇主要总结JAVA面试中关于并发相关的高频面试题。本篇的面试题基于网络整理&#xff0c;和自己编辑。在不断的完善补充哦。 2、简述程序、进程、线程、的基本概念&#xff1f; 2.1、程序 程序&#xff0c;是含有指令和数据的文件&#xff0c;被存储在磁盘或其他的…

大数据开发个人简历范本(2024最新版-附模板)

大数据开发工程师个人简历范本> 男 22 本科 张三 计算机科学与技术 1234567890 个人概述 具备深入的Hadoop大数据运维工程师背景&#xff0c;熟悉相关技术和工具 具备良好的团队合作能力&#xff0c;善于沟通和协作 具有快速学习新知识和解决问题的能力 对于数据科学…