JavaScript 解密函数 _0xb708 分析
这段代码定义了一个名为 _0xb708 的 JavaScript 函数,该函数用于解密经过 Base64 编码和按位异或加密的字符串。
函数参数:
_0x55df8e: 要解密的字符串。_0xcff731: 用于加密的密钥。
函数逻辑:
- 将
_0x55df8e转换为十六进制数字,并使用该数字作为索引从数组_0x314e中获取对应的值。 - 判断
_0xb708.QXogYh是否为undefined。如果为undefined,则执行以下操作:- 定义一个内部函数
_0xc68794,该函数用于解密加密字符串。 - 将
_0xc68794函数赋值给_0xb708.FYFVlr属性。 - 将一个空对象赋值给
_0xb708.PhjsXP属性。 - 将
true赋值给_0xb708.QXogYh属性。
- 定义一个内部函数
- 获取
_0xb708.PhjsXP中对应_0x55df8e的值,如果不存在,则执行以下操作:- 判断
_0xb708.dyxUln是否为undefined。如果为undefined,则执行以下操作:- 定义一个类
_0x1826f9,用于生成随机数。 - 创建一个
_0x1826f9对象并调用ffQQbe()方法,该方法用于验证代码是否被混淆。 - 将
true赋值给_0xb708.dyxUln属性。
- 定义一个类
- 使用
_0xb708.FYFVlr函数解密_0x47ef15。 - 将解密后的值存储到
_0xb708.PhjsXP中。
- 判断
- 返回解密后的值
_0x47ef15。
内部函数 _0xc68794 的工作原理:
- 使用
atob()函数解码 Base64 编码的字符串。 - 使用
decodeURIComponent()函数解码 URL 编码的字符串。 - 使用 RC4 算法解密字符串。
代码中的混淆技术:
- 变量和函数使用随机生成的短字符串命名。
- 使用
~~运算符代替Math.floor()函数。 - 使用
toString(16)方法将数字转换为十六进制字符串。 - 使用
slice(-2)方法截取字符串的最后两位字符。
总结:
这个代码片段展示了一种常见的 JavaScript 混淆技术,使用 Base64 编码、按位异或加密和 RC4 算法对代码进行保护,同时使用随机命名和混淆语法来增加代码的阅读难度,防止代码被直接窃取或分析。
原文地址: https://www.cveoy.top/t/topic/l0mA 著作权归作者所有。请勿转载和采集!