_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.mfbz.cn/a/307068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SemiDrive E3 打包说明

一、 概述 本文介绍 E3 PAC 打包&#xff0c;编译器生成 bin 文件需要通过打包生成 PAC 包&#xff0c;再通过 SDToolBox 工具将 PAC 包烧写到芯片&#xff0c;PAC 包的物理载体分为 Flash、eMMC、SD&#xff0c;一个 PAC包最多支持 3 个BootPackage&#xff1b;本文主要描述打…

Maven 基础总结篇

Maven 基础总结篇 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构&#xff1a;用于解决不同IDE&#xff08;例如eclipse与IDEA&#xff09;不同的项目结构的问题 提供了一套标准化的构建流程&#xff08;编译&…

CMake入门教程【核心篇】动态库与静态库的差别

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.概述2.动态库(Shared Libraries)主要特点使用场景3.静态库(Static Libraries)主要特点

Android 13 移除下拉栏中的设置入口

介绍 因为当前项目的设置已被加密&#xff0c;客户不希望通过下拉窗口的设置图标进入设置&#xff0c;决定去掉该图标。 效果展示 分析 这里首先想到在SystemUI寻找这个图标的资源文件&#xff0c;找到资源文件后寻找对应控件调用的地方&#xff0c;根据id寻找控件代码即可。…

无锡市出租车数据,Shp+excel格式,2020年,字段含经纬度、采集时间、方向、各方向加速度等,可预览

基本信息. 数据名称: 无锡市出租车数据 数据格式: Shpexcel 数据时间: 2020年 数据几何类型: 点 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1id出租车id2lon经度_43263lat纬度_43264cjsj采集时间5fx方向6sd速…

vs2008 fatal error C1083: 无法打开包括文件:“atlapp.h”: No such file or directory

在翻看以前用vs2008写的代码时&#xff0c;竟然提示&#xff1a; fatal error C1083: 无法打开包括文件:“atlapp.h”: No such file or directory貌似以前也遇到过&#xff0c;至于具体原因一时忘记了。网上搜了一下&#xff0c;发现是因为没有安装WTL&#xff08;下载地址&am…

ffmpeg[学习(四)](代码实现) 实现音频数据解码并且用SDL播放

0、作者杂谈 CSDN大多数都是落后的&#xff0c;要么是到处复制粘贴的&#xff0c;对于初学者我来说困惑了很久&#xff0c;大多数CSDN文章都是使用旧的API &#xff0c;已经被否决了&#xff0c;于是我读一些官方文档&#xff0c;和一些开源项目音视频的输出过程&#xff0c;写…

PPT插件-大珩助手-选择同类

选择同类-颜色 对于选中的形状&#xff0c;一键选中当前页中的所有相同颜色的形状 选择同类-文本 一键选择当前页中的所有文本对象 选择同类-非文本 一键选择当前页中的所有非文本对象 选择同类-反选 一键选择当前页未选择的对象 软件介绍 PPT大珩助手是一款全新设计的…

C++协程操作

什么是C++协程 C++中的协程是一种用户态轻量级线程,它拥有自己的上下文和栈,并且协程的切换和调度由用户定义,不需要陷入内核。如同一个进程可以拥有多个线程,一个线程也可以拥有多个协程。协程的优点在于极高的执行效率,因为协程切换不需要陷入内核,而是由用户程序定义切…

国标gb28181模拟环境搭建

目录 准备工作服务器搭建模拟设备搭建注意事项:1.GB28181-2016模拟设备网络情况2.保证防火墙关闭3.按照我提供的方式安装wireshark 操作步骤1.打开GB28181-2016自动化测试工具2.运行界面配置3.GB28181-2016自动化测试工具运行4.打开模拟设备5.查看测试结果6.生成测试报告 抓包 …

用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

Retrieval-Augmented Generation&#xff08;RAG&#xff09;是一种强大的技术&#xff0c;能够提高大型语言模型&#xff08;LLM&#xff09;的性能&#xff0c;使其能够从外部知识源中检索信息以生成更准确、具有上下文的回答。 本文将详细介绍 RAG 在 LangChain 中的应用&a…

VMware虚拟机安装linux

下载linux镜像文件 记住下载到的路径&#xff0c;后面需要用到!!! 开始: 1. 双击打开VMware 2. 点击 创建新的虚拟机 3. 新建虚拟机向导&#xff0c;选择 自定义&#xff08;高级&#xff09; &#xff0c;点击 下一步 4. 选择虚拟机硬件兼容性&#xff0c;默认 点击 下一步…

C2-4.3.1 多个决策树——随机森林

C2-4.3.1 多个决策树——随机森林 参考链接 1、为什么要使用多个决策树——随机森林&#xff1f; 决策树的缺点&#xff1a; A small change in the data can cause a large change in the structure of the decision tree causing instability 即&#xff1a;对数据集 中…

已安装MySQL5.7的基础上安装MySQL8教程

类似文章很多&#xff0c;但部分问题解决方案并不是很完整&#xff0c;且对细节描述不够清楚&#xff0c;特意总结一篇 在本机已经安装MySQL5.7的情况下新安装MySQL8.x的方案如下&#xff08;请按照步骤详细操作&#xff09;&#xff1a; 1.进入官网下载 https://dev.mysql.c…

怎么批量创建多个文件夹并命名?

怎么批量创建多个文件夹并命名&#xff1f;在日常的文件管理中&#xff0c;有时候我们需要批量创建多个文件夹并给它们命名&#xff0c;以便更好地组织和分类我们的文件。无论是在工作中还是个人使用中&#xff0c;批量创建文件夹可以帮助我们更高效地整理和管理文件。想象一下…

游戏引擎支持脚本编程有啥好处

很多游戏引擎都支持脚本编程。Unity、Unreal Engine、CryEngine等大型游戏引擎都支持使用脚本编写游戏逻辑和功能。脚本编程通常使用C#、Lua或Python等编程语言&#xff0c;并且可以与游戏引擎的API进行交互来控制游戏对象、设置变量、执行行为等。使用脚本编程&#xff0c;游戏…

java项目启动报错排查过程——mysql服务挂了

来自前端同事无法启动后台项目的案例 Caused by: java.net.ConnectException Create breakpoint : Connection refused: connect The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 大致…

【信息安全】深度分析邮件安全及钓鱼攻击防范

本博文共计3100余字&#xff0c;预计需阅读20分钟 【邮件安全建设】 一、前言 邮件系统作为企业办公网络架构中重要的组成部分&#xff0c;同时也是业务高频使用的办公应用&#xff0c;一旦出现安全问题&#xff0c;业务将会被严重干扰甚至中断&#xff0c;本篇博客通过攻守两…

基于Vue的应届毕业生财务管理系统-计算机毕业设计源码82886

摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发达&#xff0c;应届毕业生财务…

如何正确地理解应用架构并开发

许多同学或多或少都经历过这样的流程&#xff1a; 新同学刚来公司&#xff0c;学习了解团队的一些工程代码&#xff0c;并了解其中的代码风格团队新接手了一些其他团队的项目&#xff0c;需要了解工程结构以及概念如何定义工程项目的工程结构&#xff0c;包目录结构并达成团队共…
最新文章