JS解密之新js加密实战(二)

news2024/11/24 17:10:57

在这里插入图片描述

前言

上次发了一篇关于新加密的,只解了前边两层,这中间家里各种事情因素影响,没有继续进一步研究,今天百忙之中抽空发布第二篇,关于其中的一小段加密片段,我认为分割成多个小片段是更容易被理解的。逻辑相对也会清晰很多。这个加密前后关联的地方很多,所以有时候感觉无从下手。但所有加密都是有自己的规律的…

上代码片段
  if (_0x1756 && _0x6386.e_7zrpr > -51) {
    var _0x2423 = _0x31566(_0x2304 => {
      var _0x2412, _0x2356, _0x2344, _0x2416, _0x2417;

      void (_0x2412 = 401, _0x2356 = 335, _0x2344 = -208, _0x2416 = -493, _0x2417 = {
        ["am"]: -4,
        ["ai"]: () => _0x2344 += 212,
        ["e"]: 6,
        ["aj"]: -80,
        ["c"]: 39,
        b: 0,
        ae: -106,
        ["d"]: 1,
        ["f"]: -0x11,
        k: 57,
        ah: () => {
          var _0x1832 = _0x31566(_0x1826 => {
            return _0x4899[_0x1826 < 0x25 ? _0x1826 - 0x1c : _0x1826 > 0x3b1 ? _0x1826 - 0xf : _0x1826 < 0x25 ? _0x1826 + 0x57 : _0x1826 < 0x3b1 ? _0x1826 > 0x25 ? _0x1826 - 0x26 : _0x1826 - 0x3b : _0x1826 - 0x23];
          }, 0x1);

          typeof (_0x2417["ad"](), _0x2412 += 139, _0x2356 += 41, _0x2344 -= 0x56, _0x2416 += _0x2417["ae"]);
          return '\x61\x66';
        },
        H: -97,
        j: () => _0x2416 += 108 == _0x2344 ? _0x2416 + 355 : 106,
        ["av"]: () => {
          typeof (_0x2356 = -(_0x2412 - 271), _0x2412 *= 0x2, _0x2412 -= 353, _0x2356 *= 2, _0x2356 -= _0x2356 == _0x2417["am"] ? _0x2417["ao"] : 95, _0x2344 += _0x2412 == (_0x2344 == -334 ? -0x56 : _0x2417["aq"]) ? "ar" : 126, _0x2416 -= 242);
          return '\u0061\u0074';
        },
        J: 335,
        ["ad"]: () => _0x2412 = -0x35,
        m: _0x31566(() => {
          return (_0x2417.l = _0x2244) < _0x2170;
        }, 0x0),
        ["aC"]: _0x31497(_0x31566((..._0x1914) => {
          var _0x1916 = _0x31566(_0x1906 => {
            return _0x4899[_0x1906 < -0x5a ? _0x1906 + 0x43 : _0x1906 > 0x332 ? _0x1906 + 0x11 : _0x1906 < -0x5a ? _0x1906 + 0x52 : _0x1906 < 0x332 ? _0x1906 > -0x5a ? _0x1906 > -0x5a ? _0x1906 > 0x332 ? _0x1906 - 0x37 : _0x1906 > -0x5a ? _0x1906 + 0x59 : _0x1906 - 0x2b : _0x1906 + 0x62 : _0x1906 - 0x13 : _0x1906 - 0x3a];
          }, 0x1);

          typeof (_0x1914["length"] = 1, _0x1914.RsJKWo = _0x1914[0]);
          return _0x1914.RsJKWo - 211;
        }, 0x0), 0x1),
        aD: _0x31497(_0x31566((..._0x1969) => {
          var _0x1942 = _0x31566(_0x1937 => {
            return _0x4899[_0x1937 > 0x3c5 ? _0x1937 - 0x1e : _0x1937 < 0x39 ? _0x1937 + 0x3a : _0x1937 > 0x39 ? _0x1937 < 0x39 ? _0x1937 - 0x47 : _0x1937 > 0x39 ? _0x1937 > 0x39 ? _0x1937 - 0x3a : _0x1937 - 0x48 : _0x1937 - 0x11 : _0x1937 + 0x5];
          }, 0x1);

          typeof (_0x1969["length"] = 1, _0x1969["QfYIvH"] = 0x6a);

          if (_0x1969["QfYIvH"] > _0x1969["QfYIvH"] - (_0x1969["QfYIvH"] - 197)) {
            return _0x1969[_0x1969["QfYIvH"] - 102];
          } else {
            var _0x1970 = _0x31566(_0x1964 => {
              return _0x4899[_0x1964 < 0x361 ? _0x1964 > -0x2b ? _0x1964 > 0x361 ? _0x1964 - 0x43 : _0x1964 + 0x2a : _0x1964 + 0x7 : _0x1964 - 0x16];
            }, 0x1);

            return _0x1969[0] != _0x1969["QfYIvH"] + 0xbc && _0x1969[0] - 208;
          }
        }, 0x0), 1),
        ["aE"]: _0x31497(_0x31566((..._0x1993) => {
          var _0x1989 = _0x31566(_0x1983 => {
            return _0x4899[_0x1983 < 0x5d ? _0x1983 - 0x3d : _0x1983 - 0x5e];
          }, 0x1);

          !(_0x1993["length"] = 0x1, _0x1993.qbo4gA3 = _0x1993[0]);
          return _0x1993.qbo4gA3 != -387 && _0x1993.qbo4gA3 + 0x1ff;
        }, 0x0), 1)
      });

      while (_0x2412 + _0x2356 + _0x2344 + _0x2416 != 0x58 && _0x6386.Tvr4gn > -32) {
        var _0x2285, _0x2102, _0x2170, _0x2244, _0x2379, _0x2380, _0x2383, _0x2379, _0x2380, _0x2383;

        function _0x2418(_0x2032) {
          return _0x4899[_0x2032 > 0xa ? _0x2032 > 0xa ? _0x2032 > 0xa ? _0x2032 < 0xa ? _0x2032 - 0xe : _0x2032 < 0x396 ? _0x2032 > 0xa ? _0x2032 > 0xa ? _0x2032 < 0xa ? _0x2032 - 0x49 : _0x2032 - 0xb : _0x2032 + 0x36 : _0x2032 + 0x6 : _0x2032 - 0x38 : _0x2032 - 0x31 : _0x2032 - 0x19 : _0x2032 - 0x2a];
        }

        void (_0x2285 = [_0x31471[_0x31499(578)](undefined, 15), "hasOwnProperty"], _0x2102 = {
          [_0x31499(0x246)]: "charAt"
        });

        switch (_0x2412 + _0x2356 + _0x2344 + _0x2416) {
          case _0x6386.v1RIIq() ? _0x2412 != 384 && _0x2412 - 366 : null:
          case !_0x6386.v1RIIq() ? 47 : 0x292:
          case _0x6386.v1RIIq() ? 0x336 : -202:
          case 203:
            typeof (_0x2170 = (_0x2417["i"] = _0x2304).length, _0x2412 -= 17);
            break;

          default:
            _0x2417["az"] = '\u0061\u0041';

            if (!(_0x6386.e_7zrpr > -0x33)) {
              _0x2344 += 0x56;
              break;
            }

            return _0x2379;

          case _0x6386.ZmJ02y["charAt"](4) == "5" ? _0x2417.aC(_0x2356) : void 0x0:
          case _0x6386.cYdZAA() ? 0x3e : 44:
            for (_0x2244 = (_0x2304.sort((_0x2092, _0x2093) => _0x31293(_0x2092, _0x2093, _0x31312 = -_0x2417["c"])), 0); _0x2417["m"]() && _0x6386.ZmJ02y[_0x2102[_0x31499(582)]](4) == "5"; _0x2244++) {
              var _0x2309 = _0x31566(_0x2124 => {
                return _0x4899[_0x2124 < -0x60 ? _0x2124 + 0xf : _0x2124 > 0x32c ? _0x2124 - 0xe : _0x2124 < -0x60 ? _0x2124 - 0x3b : _0x2124 > -0x60 ? _0x2124 > 0x32c ? _0x2124 + 0x38 : _0x2124 > 0x32c ? _0x2124 - 0x60 : _0x2124 + 0x5f : _0x2124 + 0x3b];
              }, 0x1);

              if ((_0x2417["e"] == 6 && _0x2244) > _0x2417["b"] && (_0x2417["f"] == "q" ? encodeURIComponent : _0x2304)[_0x2417["r"] = _0x2244] === (_0x2416 == _0x2417.c - 0x1aa ? _0x2304 : EvalError)[(typeof _0x2417["k"] == _0x2285[0] ? _0x2244 : Boolean) - (_0x2416 == 12 ? isFinite : _0x2417)["d"]]) {
                continue;
              }

              void (_0x2380 = _0x31293(_0x2244, 1, _0x31086((_0x2344 == -0xd0 ? _0x2417 : clearInterval)["e"])), _0x2383 = _0x31293(_0x2417["e"] == 77 ? document : _0x2170, 1, _0x31312 = -39));

              while ((_0x2417.b == -208 ? Error : _0x2380) < _0x2383 && _0x6386.e_7zrpr > -51) {
                var _0x2280 = _0x31566(_0x2189 => {
                  return _0x4899[_0x2189 < -0x58 ? _0x2189 + 0x49 : _0x2189 + 0x57];
                }, 0x1);

                if ((_0x2416 == -0x183 ? _0x2304 : parseFloat)[_0x2244] + _0x2304[_0x2380] + (_0x2417["b"] == "w" ? Math : _0x2304)[_0x2383] < (_0x2417["z"] = _0x2417)["b"] && _0x6386.Tvr4gn > -32) {
                  _0x2380++;
                } else {
                  if (_0x2304[_0x2244] + (_0x2417["B"] = _0x2304)[_0x2380] + _0x2304[_0x2383] > _0x2417["b"] && _0x6386.cYdZAA()) {
                    _0x2383--;
                  } else {
                    var _0x2317 = _0x31566(_0x2231 => {
                      return _0x4899[_0x2231 < 0x0 ? _0x2231 - 0x38 : _0x2231 < 0x0 ? _0x2231 - 0xc : _0x2231 - 0x1];
                    }, 0x1);

                    (_0x2356 == (_0x2412 == -12 ? 45 : 335) && _0x2379).push([(_0x2417.k == 384 ? setImmediate : _0x2304)[_0x2244], (_0x2416 == _0x2417["H"] || _0x2304)[_0x2380], _0x2304[_0x2417.f == -17 && _0x2383]]);

                    while (_0x2380 < (_0x2417.f == 14 || _0x2383) && (_0x2416 == (-102 < _0x2344 ? 146 : -387) ? _0x2304 : String)[_0x2417["L"] = _0x2380] === _0x2304[(_0x2417["b"] == -0x45 ? WeakSet : _0x2380) + (typeof _0x2417["c"] == "object" ? setTimeout : _0x2417)["d"]] && _0x6386.v1RIIq()) _0x2380++;

                    while ((_0x2417[_0x2285[1]]("T") ? confirm : _0x2380) < _0x2383 && (_0x2417.c == 39 ? _0x2304 : globalThis)[_0x2383] === (_0x2417[_0x31471[_0x31499(577)](void 0x0, [0x12]) + "Proper" + '\u0074\u0079']("X") || _0x2304)[(_0x2417["ab"] = _0x2383) - (_0x2344 == -208 ? _0x2417 : isNaN)["d"]] && _0x6386.ZmJ02y[_0x31471[_0x31499(578)](undefined, 11)](0x4) == "5") _0x2383--;

                    !(_0x2380++, _0x2383--);
                  }
                }
              }
            }

            _0x2412 -= 122;
            break;

          case _0x6386.e_7zrpr > -0x33 ? 466 : -229:
          case _0x6386.e_7zrpr > -51 ? 0x3d7 : -154:
          case 0x54:
            !(_0x2379 = [], _0x2380 = _0x2417["b"], _0x2383 = 0, _0x2412 += _0x2417.f, _0x2356 += _0x2344 == -208 ? -0x31 : _0x2417["h"], _0x2416 += _0x2412 - 278);
            break;

          case _0x6386.e_7zrpr > -51 ? _0x2417.aD(_0x2356) : undefined:
          case _0x6386.v1RIIq() ? 0x304 : -134:
          case _0x6386.Tvr4gn > -0x20 ? 715 : -162:
            if (_0x2417.av() == '\x61\x74' && _0x6386.ZmJ02y["charAt"](0x4) == "5") {
              break;
            }

          case !_0x6386.cYdZAA() ? null : _0x2417.aE(_0x2416):
            void (delete _0x2417["ay"], _0x2379 = [], _0x2380 = _0x2417.b, _0x2383 = 0x0, _0x2417.j());
            break;

          case _0x6386.ZmJ02y["charAt"](4) == "5" ? 0x2f : -0xcd:
            if (_0x2417["ah"]() == '\x61\x66' && _0x6386.cYdZAA()) {
              break;
            }

          case _0x6386.Tvr4gn > -32 ? 682 : 0x0:
          case _0x6386.cYdZAA() ? 721 : 125:
          case 86:
          case !(_0x6386.Tvr4gn > -32) ? -33 : 951:
            void (_0x2412 = -87, _0x2412 -= 0x73, _0x2417["ai"](), _0x2416 += _0x2416 == _0x2417["aj"] ? 20 : -136);
        }
      }
    }, 0x1);

    console.log(_0x2423);
  }

分析思路

我截取了这个if里的函数体,里面是如下内容

申明了一些变量、以及一个对象体、一个循环体。结构如下。
  1. 初始化变量:在循环开始之前,有一系列变量的初始化操作,例如 _0x2285, _0x2102, _0x2170, _0x2244, _0x2379, _0x2380, _0x2383。这些变量可能在后续的逻辑中被使用。
  2. 条件判断:循环体的开头是一个条件判断语句,判断 _0x2412 + _0x2356 + _0x2344 + _0x2416 是否等于 0x58,并且 _0x6386.Tvr4gn 是否大于 -32。这个条件可能是用来控制循环的终止条件。
  3. 分支逻辑:根据不同的条件,循环体内有多个分支逻辑,每个分支可能执行不同的操作。例如,根据条件判断的结果,可能会执行不同的赋值操作、函数调用或者控制流程跳转。
  4. 变量修改:循环体内对多个变量进行了修改,包括增加、减少、赋值等操作。这些操作可能是用来控制程序的状态或者执行特定的逻辑。
  5. 循环控制:在循环体内部还有一些语句用来控制循环的继续或者中止,例如 continuebreak 语句。这些语句可能在特定的条件下执行,影响循环的执行流程。

结论

其实到这一步,懂的人已经很明了了,如果一步步手动还原。但是我要做的是用代码还原,这是一个很有趣的问题。

js加密解密都是可逆的,只要是js都没问题。最终解释权由jsjiami官网所有

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

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

相关文章

【SRC实战】修改赠送金额支付漏洞

挖个洞先 https://mp.weixin.qq.com/s/NQKJQF81XpG8815EfgvgKw “ 以下漏洞均为实验靶场&#xff0c;如有雷同&#xff0c;纯属巧合 ” 01 — 漏洞证明 “ 充值赠送金额能否修改&#xff1f; ” 1、充值30元赠送1.9元礼包&#xff0c;充值100元赠送7元礼包&#xff0c;充值…

买卖股票的最佳时机 II(LeetCode 122)

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效

FANUC机器人单轴零点标定时提示无法执行零点标定,由于重力补偿已启用,所有机器人轴的脉冲计数必须有效 首先,机器人由于长时间断电未使用,6个轴的编码器数据全部丢失,上电后报警SRVO-062, 有关SRVO-062故障报警的相关内容可参考以下链接: FANUC机器人SRVO-062报警原因分…

通过集成式 PLM Services for SIMULIA 实现协作

在快速发展的产品开发世界中&#xff0c;无缝和高效的管理解决方案已成为必需品。在这些解决方案中&#xff0c;PLM 服务正变得越来越普及&#xff0c;这要归功于它们的能力。这些服务提供了一种管理产品生命周期的集成方法&#xff0c;从概念开始&#xff0c;到设计和制造&…

Pyhton专题学习资料包,Python从入门到精通全套学习资料[30G]

资源概览 百本Python学习书籍大礼包百本前端学习书籍大礼包微专业-数据挖掘分析之Python篇小甲鱼零基础入门学习Python(全96集) 资源获取 &#x1f9d1;‍&#x1f4bb;【Pyhton专题资料】【30G】 百本Python书籍## 百本前端书籍 微专业-数据挖掘分析之Python篇 预备课【先…

Docker下Open WebUI,Ollama的安装实践

提示一下Open WebUI与ollama的关系。后端的同学可以理解为Open WebUI等于是个Navicat&#xff0c;Ollama就是具体的数据库实例。 官方安装文档&#xff1a; &#x1f3e1; Home | Open WebUI Open WebUI官网文档翻译&#xff1a; 注意&#xff1a; 使用Docker安装Open WebU…

有趣的css - 打字机动画效果

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是使用 css 实现好玩的单行打字机效果&#xff0c;和我一起看看吧。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整…

成员函数构造函数析构函数

文章目录 类的6个默认成员函数构造函数概述定义特性 析构函数概述特性 类的6个默认成员函数 空类&#xff1a; 如果一个类里面什么都没有写&#xff0c;我们称之为空类 class Date {};空类真的什么都没有吗&#xff1f; 实际上并非如此&#xff0c;编译器会自动生成6个默认成…

樊春海院士/姚广保课题组2024年博士后/助理研究员火热招募!

尊敬的读者们&#xff0c;我们很高兴地向您介绍一个激动人心的机会——上海交通大学张江高等研究院正在进行博士后和科研助理的招聘&#xff0c;这是一个与顶尖科学家共事、参与前沿科学研究的绝佳机会。 工作地点位于风景优美、充满活力的上海市浦东新区&#xff0c;这里是中国…

FENDI CLUB精酿啤酒馆与传统啤酒销售模式的不同

精酿啤酒火了&#xff0c;国产品牌精酿也在迅速崛起&#xff0c;为精酿啤酒这一小众品类发展加足了马力。与此同时&#xff0c;精酿酒吧、精酿小酒馆也开始出现了增长。这标志着中国精酿啤酒市场的快速发展和国产品牌的崭新局面。 FENDI CLUB精酿啤酒已经在不少地方开始积极开…

CDGA|数据治理实战案例:从数据收集到治理,再到价值应用

在当今信息爆炸的时代&#xff0c;数据治理已成为企业提升核心竞争力、实现数字化转型的关键一环。本文将通过一个实战案例&#xff0c;详细剖析数据治理的全过程&#xff0c;从数据收集到治理&#xff0c;再到价值应用&#xff0c;为读者提供有益的参考和启示。 数据收集&…

港中深「户外自重构蜗牛机器人集群」登Nature子刊!

在科幻电影《超能陆战队》中&#xff0c;我们见证了一种由成千上万个微小磁性单元组成的机器人通过磁力相互连接&#xff0c;形成各种复杂的三维结构。香港中文大学&#xff08;深圳&#xff09;林天麟教授团队致力于将这一科幻转化为现实&#xff0c;近年来开发了一系列自由形…

APP反抓包 - 客户端证书验证

一,校验的原理 下图为HTTP协议的请求过程:传输过程中都是明文数据 下图为HTTPS协议的请求过程: 注意:公钥加密的数据只能通过对应的私钥才能解密,就算是进行加密的公钥也不能进行解密。 上述的请求过程看似复杂,实际就是两部分: 通过公钥与私钥同步对称密钥使用对…

安科瑞工业IT产品及解决方案—电源不接地,设备外壳接地【监测系统对地绝缘电阻】

低压配电系统分类及接地保护方案 国际电工委员会&#xff08;iec&#xff09;对各接地方式供电系统的规定规定&#xff1a;(低压&#xff1a;交流1000V以下&#xff09; 低压配电接地、接零系统分为IT、TT、TN三种基本形式。TN分为TN-C&#xff0c;TN-S&#xff0c;TN-C-S三种…

网络编程UDP

目录 1.什么是网络编程 1.1发送端和接收端 1.2请求和响应 1.3客户端和服务端 1.4常见的客户端服务端模型 2.Socket套接字 2.1Socket概念 2.2三种Socket套接字分类 3.Java数据报套接字通信模型&#xff08;UDP&#xff09; 4.Socket编程注意事项 5.UDP数据报套接字编程…

只需三步,教你轻松搞定内网穿透

最近开发过程中又遇到了需要外网访问内部服务接口的需求&#xff0c;比如调用三方服务的各种回调通知、支付成功回调、大模型回调等都需要外部服务器来访问内部的接口&#xff0c;这里有个问题就是如果我们在本地或者测试环境调试的过程中我们使用的是内网环境&#xff0c;那外…

【数据结构课程学习】:队列学习

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697; 1.队列的基本概念&#xff1a…

AI地名故事:笔岗村

笔岗村&#xff0c;实际上是由笔村和宏岗村两个古老的村落合并而成的。南宋度宗元年&#xff0c;也就是公元1265年&#xff0c;笔村开始建立。随着时间的推移&#xff0c;到了宋代后期&#xff0c;宏岗村也相继建立。这两个村落各自承载着丰富的历史和文化&#xff0c;最终在历…

(五)STM32F407 cubemx IIC驱动OLED(2)硬件篇

这篇文章主要是个人的学习经验&#xff0c;想分享出来供大家提供思路&#xff0c;如果其中有不足之处请批评指正哈。   废话不多说直接开始主题&#xff0c;本人是基于STM32F407VET6芯片&#xff0c;但是意在你看懂这篇文章后&#xff0c;不管是F1,F4,H7等一系列系统硬件IIC配…

HTML5 Canvas发光Loading动画源码

源码介绍 之前我们分享过很多基于CSS3的Loading动画效果&#xff0c;相信大家都很喜欢。今天我们要来分享一款基于HTML5 Canvas的发光Loading加载动画特效。Loading旋转图标是在canvas画布上绘制的&#xff0c;整个loading动画是发光3D的视觉效果&#xff0c;HTML5非常强大。 …