这段代码定义了一个名为 _0xb708 的 JavaScript 函数,该函数用于解密经过 Base64 编码和按位异或加密的字符串。

函数参数:

  • _0x55df8e: 要解密的字符串。
  • _0xcff731: 用于加密的密钥。

函数逻辑:

  1. _0x55df8e 转换为十六进制数字,并使用该数字作为索引从数组 _0x314e 中获取对应的值。
  2. 判断 _0xb708.QXogYh 是否为 undefined。如果为 undefined,则执行以下操作:
    • 定义一个内部函数 _0xc68794,该函数用于解密加密字符串。
    • _0xc68794 函数赋值给 _0xb708.FYFVlr 属性。
    • 将一个空对象赋值给 _0xb708.PhjsXP 属性。
    • true 赋值给 _0xb708.QXogYh 属性。
  3. 获取 _0xb708.PhjsXP 中对应 _0x55df8e 的值,如果不存在,则执行以下操作:
    • 判断 _0xb708.dyxUln 是否为 undefined。如果为 undefined,则执行以下操作:
      • 定义一个类 _0x1826f9,用于生成随机数。
      • 创建一个 _0x1826f9 对象并调用 ffQQbe() 方法,该方法用于验证代码是否被混淆。
      • true 赋值给 _0xb708.dyxUln 属性。
    • 使用 _0xb708.FYFVlr 函数解密 _0x47ef15
    • 将解密后的值存储到 _0xb708.PhjsXP 中。
  4. 返回解密后的值 _0x47ef15

内部函数 _0xc68794 的工作原理:

  • 使用 atob() 函数解码 Base64 编码的字符串。
  • 使用 decodeURIComponent() 函数解码 URL 编码的字符串。
  • 使用 RC4 算法解密字符串。

代码中的混淆技术:

  • 变量和函数使用随机生成的短字符串命名。
  • 使用 ~~ 运算符代替 Math.floor() 函数。
  • 使用 toString(16) 方法将数字转换为十六进制字符串。
  • 使用 slice(-2) 方法截取字符串的最后两位字符。

总结:

这个代码片段展示了一种常见的 JavaScript 混淆技术,使用 Base64 编码、按位异或加密和 RC4 算法对代码进行保护,同时使用随机命名和混淆语法来增加代码的阅读难度,防止代码被直接窃取或分析。

JavaScript 解密函数 _0xb708 分析

原文地址: https://www.cveoy.top/t/topic/l0mA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录