分析一个JS加密代码,逐步击破

2023-10-09 04:04

本文主要是介绍分析一个JS加密代码,逐步击破,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源代码

;eval(function(p, a, c, k, e, r) {e = String;if (!''.replace(/^/, String)) {while (c--)r[c] = k[c] || c;k = [function(e) {return r[e]}];e = function() {return '\\w+'};c = 1};while (c--)if (k[c])p = p.replace(new RegExp('\\b' + e(c) + '\\b','g'), k[c]);return p
}('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {}));

分析功能

这段代码包含了混淆和解密逻辑。现在,让我逐步分析并添加代码案例来解释每个步骤:

步骤 1:自执行函数定义

javascriptCopy code;eval(function(p, a, c, k, e, r) {// ...
}('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {}));

这是一个自执行函数,它接受六个参数:packer。其中,('0.1(2)', 3, 3, 'console|log|123'.split('|'), 0, {}) 是该函数的参数,包括一个字符串和一些数字和数组。

步骤 2:重新定义 e 变量

e = String;

在函数内部,它将 e 变量重新定义为全局 String 构造函数。

步骤 3:检查字符串替换操作是否可行

if (!''.replace(/^/, String)) {while (c--)r[c] = k[c] || c;k = [function(e) {return r[e]}];e = function() {return '\\w+'};c = 1
}

这部分代码检查一个字符串的替换操作是否可行,如果不可行,则进入一个循环,在循环中重新定义了 ekc 变量。

步骤 4:字符串替换操作

while (c--)if (k[c])p = p.replace(new RegExp('\\b' + e(c) + '\\b','g'), k[c]);

这部分代码是主要的解密或解混淆逻辑。它使用 p 字符串和一些循环操作来执行替换。具体的替换操作在这里发生,但由于混淆和变量的重新定义,代码的实际功能不清楚。

结语

需要注意的是,这段代码的混淆和解密逻辑相当复杂,具体的操作和目的不清楚。要理解这段代码的确切功能,可能需要进行更深入的分析,包括查看变量 p 的初始值以及对变量 ekcr 的详细操作。

js在线加密解密

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。

也可以到上方网站,底部有我联系方式详谈。

这篇关于分析一个JS加密代码,逐步击破的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/170204

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字