AST交互-三元表达式转switch语句

阅读时间:全文 3563 字,预估用时 18 分钟
创作日期:2022-08-16
文章标签:
 
BEGIN

这两年前端代码加密进化很大,为了在逆向过程中不那么累,我们需要使用babel修改网站源码,改成我们调试不那么累的代码,如将三元表达式语句代码改成switch语句代码。

我们找到网站实际代码如下:

if (_$j7 <= 63)
  _$j7 <= 15 ? _$j7 <= 3 ? _$j7 <= 0 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] * _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 1 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] & _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 2 ? _$jA[_$g3++] = _$gD[_$gf[++_$f1]] : _$jA[_$g3++] = true : _$j7 <= 7 ? _$j7 <= 4 ? (_$fx = _$gf[++_$f1],
  _$kb = _$jA[--_$g3],
  !_$kb ? (_$f1 += _$fx,
  ++_$g3) : 0) : _$j7 <= 5 ? (_$kb = _$jA[--_$g3],
  _$du(),
  _$kb = _$cR[_$fx] |= _$kb) : _$j7 <= 6 ? _$jA[_$g3++] = _$aG[_$gf[++_$f1]] : (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] !== _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 11 ? _$j7 <= 8 ? (_$g3 -= 2,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1])) : _$j7 <= 9 ? (_$g3--,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$jA[_$g3++] = _$cR(_$jA[_$kb])) : _$j7 <= 10 ? (_$ka = _$gf[++_$f1],
  _$f1 += _$ka) : (_$kC = _$gf[++_$f1],
  _$jA[_$g3++] = _$dz[_$kC][_$gf[++_$f1]]) : _$j7 <= 12 ? (_$kb = _$jA[--_$g3],
  _$iv[4] = 1,
  _$iv[5] = _$kb,
  _$f1 = _$_0) : _$j7 <= 13 ? (_$g3 -= 3,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2])) : _$j7 <= 14 ? (_$ka = _$gf[++_$f1],
  _$f1 -= _$ka) : (_$kC = _$gf[++_$f1],
  _$jA[_$g3++] = _$ko[_$kC][_$gf[++_$f1]]) : _$j7 <= 31 ? _$j7 <= 19 ? _$j7 <= 16 ? (_$g3--,
  _$kb = _$g3,
  _$du(),
  _$kb = _$cR[_$fx](_$jA[_$kb])) : _$j7 <= 17 ? (_$g3--,
  _$kb = _$g3,
  _$du(),
  _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb])) : _$j7 <= 18 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3]in _$kb,
  _$jA[_$g3++] = _$kb) : (_$kb = _$jA[--_$g3],
  _$cR = _$jA[_$g3 - 1],
  _$cR[_$j4[_$gf[++_$f1]]] = _$kb) : _$j7 <= 23 ? _$j7 <= 20 ? _$jA[_$g3++] = [] : _$j7 <= 21 ? (_$gf[_$f1] = 26,
  _$fx = _$gf[++_$f1],
  _$kb = _$j4[_$fx],
  _$gf[_$f1] = _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 22 ? (_$kb = _$jA[--_$g3],
  _$du(),
  _$kb = _$cR[_$fx] += _$kb) : _$jA[_$g3++] = _$cL[_$gf[++_$f1]] : _$j7 <= 27 ? _$j7 <= 24 ? (_$fx = _$jA[--_$g3],
  _$cR = _$jA[--_$g3]) : _$j7 <= 25 ? (_$kb = _$jA[--_$g3],
  _$du(),
  _$cR[_$fx] = _$kb) : _$j7 <= 26 ? _$jA[_$g3++] = _$gf[++_$f1] : (_$kC = _$gf[++_$f1],
  _$fx = _$gf[++_$f1],
  _$cR = _$dz[_$kC]) : _$j7 <= 28 ? (_$du(),
  _$jA[_$g3++] = _$cR[_$fx]()) : _$j7 <= 29 ? (_$g3 -= 2,
  _$kb = _$g3,
  _$du(),
  _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1])) : _$j7 <= 30 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] > _$kb,
  _$jA[_$g3++] = _$kb) : (_$du(),
  _$cR = _$cR[_$fx],
  _$jA[_$g3++] = _$cR()) : _$j7 <= 47 ? _$j7 <= 35 ? _$j7 <= 32 ? (_$cG(_$$I, _$gf[++_$f1], _$gf[++_$f1], _$ka = _$gf[++_$f1], _$gf[++_$f1], _$f1 + 1, _$aG, _$iv),
  _$iv[4] ? _$f1 = _$_0 : _$f1 += _$ka) : _$j7 <= 33 ? (_$fx = _$gf[++_$f1],
  _$cR = _$gD) : _$j7 <= 34 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] != _$kb,
  _$jA[_$g3++] = _$kb) : (_$du(),
  _$cR = _$cR[_$fx],
  _$kb = _$cR()) : _$j7 <= 39 ? _$j7 <= 36 ? (_$g3--,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$kb = _$cR(_$jA[_$kb])) : _$j7 <= 37 ? (_$gf[_$f1] = 92,
  _$fx = _$f3[_$gf[++_$f1]],
  _$gf[_$f1] = _$fx,
  _$cR = _$jA[--_$g3]) : _$j7 <= 38 ? (_$kb = _$jA[--_$g3],
  _$ka = _$gf[++_$f1],
  _$kb ? 0 : _$f1 += _$ka) : (_$fx = _$gf[++_$f1],
  _$kb = _$jA[--_$g3],
  _$kb ? (_$f1 += _$fx,
  ++_$g3) : 0) : _$j7 <= 43 ? _$j7 <= 40 ? _$jA[_$g3++] = {} : _$j7 <= 41 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] == _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 42 ? (_$kb = _$jA[--_$g3],
  _$cR = _$jA[--_$g3],
  _$jA[_$g3++] = _$cR[_$kb]) : (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] < _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 44 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] === _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 45 ? _$jA[_$g3++] = _$fs[_$gf[++_$f1]] : _$j7 <= 46 ? (_$gf[_$f1] = 87,
  _$fx = _$f3[_$gf[++_$f1]],
  _$gf[_$f1] = _$fx,
  _$kb = _$jA[--_$g3],
  _$jA[_$g3++] = _$kb[_$fx]) : (_$g3 -= 2,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1])) : _$j7 <= 51 ? _$j7 <= 48 ? (_$fx = _$gf[++_$f1],
  _$jA[_$g3++] = _$_w(_$$I._$hW[_$fx], _$iv)) : _$j7 <= 49 ? (_$g3 -= 2,
  _$kb = _$g3,
  _$du(),
  _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1])) : _$j7 <= 50 ? (_$kb = typeof _$jA[--_$g3],
  _$jA[_$g3++] = _$kb) : (_$ka = _$gf[++_$f1],
  _$dV = _$jA.slice(_$g3 - _$ka, _$g3),
  _$g3 -= _$ka,
  _$du(),
  _$jA[_$g3++] = _$fH(_$cR[_$fx], _$dV)) : _$j7 <= 55 ? _$j7 <= 52 ? (_$kb = _$jA[--_$g3],
  _$cR = _$jA[_$g3 - 1],
  _$cR[_$f3[_$gf[++_$f1]]] = _$kb) : _$j7 <= 53 ? (_$kb = _$jA[--_$g3],
  _$jA[_$g3++] = !_$kb) : _$j7 <= 54 ? (_$fx = _$gf[++_$f1],
  _$cR = _$cL) : _$kb = _$cR[_$fx]++ : _$j7 <= 59 ? _$j7 <= 56 ? (_$iv[4] = 2,
  _$f1 = _$_0) : _$j7 <= 57 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] - _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 58 ? _$jA[_$g3++] = false : (_$gf[_$f1] = 26,
  _$fx = _$gf[++_$f1],
  _$kb = _$kG[_$fx],
  _$gf[_$f1] = _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 60 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] + _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 61 ? (_$kb = _$jA[--_$g3],
  _$cR = _$jA[_$g3 - 1],
  _$cR.push(_$kb)) : _$j7 <= 62 ? (_$fx = _$gf[++_$f1],
  _$cR = _$fs) : (_$fx = _$gf[++_$f1],
  _$cR = _$aG);
else if (_$j7 <= 79) {
  if (_$j7 <= 67) {
      if (_$j7 <= 64)
          ;
      else
          _$j7 <= 65 ? (_$gf[_$f1] = 87,
          _$fx = _$j4[_$gf[++_$f1]],
          _$gf[_$f1] = _$fx,
          _$kb = _$jA[--_$g3],
          _$jA[_$g3++] = _$kb[_$fx]) : _$j7 <= 66 ? _$jA[_$g3++] = null : (_$kb = _$jA[--_$g3],
          _$kb = _$jA[--_$g3] << _$kb,
          _$jA[_$g3++] = _$kb);
  } else
      _$j7 <= 71 ? _$j7 <= 68 ? (_$kb = _$jA[--_$g3],
      _$kb = _$jA[--_$g3] + _$kb) : _$j7 <= 69 ? (_$g3 -= 5,
      _$kb = _$g3,
      _$du(),
      _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3], _$jA[_$kb + 4])) : _$j7 <= 70 ? _$jA[_$g3++] = _$cR[_$fx]++ : (_$ka = _$gf[++_$f1],
      _$g3 -= _$ka,
      _$dV = _$jA.slice(_$g3, _$g3 + _$ka),
      _$du(),
      _$kb = _$cR[_$fx].apply(_$cR, _$dV)) : _$j7 <= 75 ? _$j7 <= 72 ? (_$kb = _$jA[--_$g3],
      _$kb = _$jA[--_$g3] % _$kb,
      _$jA[_$g3++] = _$kb) : _$j7 <= 73 ? _$jA[_$g3++] = ++_$cR[_$fx] : _$j7 <= 74 ? (_$g3 -= 4,
      _$kb = _$g3,
      _$du(),
      _$cR = _$cR[_$fx],
      _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3])) : (_$kb = _$jA[--_$g3],
      _$kb = _$jA[--_$g3] >= _$kb,
      _$jA[_$g3++] = _$kb) : _$j7 <= 76 ? _$kb = _$gf[++_$f1] : _$j7 <= 77 ? _$kb = _$cR[_$fx]-- : _$j7 <= 78 ? (_$fx = _$gf[++_$f1],
      _$kb = _$kb[_$fx]) : (_$g3 -= 3,
      _$kb = _$g3,
      _$du(),
      _$cR = _$cR[_$fx],
      _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]));
} else if (_$j7 <= 95)
  _$j7 <= 83 ? _$j7 <= 80 ? (_$fx = _$gf[++_$f1],
  _$jA[_$g3++] = _$kb[_$fx]) : _$j7 <= 81 ? (_$g3 -= 4,
  _$kb = _$g3,
  _$du(),
  _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3])) : _$j7 <= 82 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] <= _$kb,
  _$jA[_$g3++] = _$kb) : (_$fx = _$gf[++_$f1],
  _$kb = _$jA[--_$g3],
  !_$kb ? _$f1 += _$fx : 0) : _$j7 <= 87 ? _$j7 <= 84 ? (_$kb = _$jA[--_$g3],
  _$fx = _$gf[++_$f1],
  _$cR = _$ke[_$fx],
  _$ka = _$cR[_$kb],
  _$ka == _$an ? _$ka = _$gf[++_$f1] : ++_$f1,
  _$f1 += _$ka) : _$j7 <= 85 ? (_$du(),
  _$kb = _$cR[_$fx]()) : _$j7 <= 86 ? _$kb = delete _$cR[_$fx] : (_$fx = _$gf[++_$f1],
  _$kb = _$jA[--_$g3],
  _$jA[_$g3++] = _$kb[_$fx]) : _$j7 <= 91 ? _$j7 <= 88 ? (_$kb = _$jA[--_$g3],
  _$jA[_$g3++] = ~_$kb) : _$j7 <= 89 ? (_$kb = -_$jA[--_$g3],
  _$jA[_$g3++] = _$kb) : _$j7 <= 90 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] >>> _$kb,
  _$jA[_$g3++] = _$kb) : (_$kb = _$jA[--_$g3],
  _$du(),
  _$kb = _$cR[_$fx] ^= _$kb) : _$j7 <= 92 ? (_$fx = _$gf[++_$f1],
  _$cR = _$jA[--_$g3]) : _$j7 <= 93 ? (_$g3 -= 3,
  _$kb = _$g3,
  _$du(),
  _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2])) : _$j7 <= 94 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] / _$kb,
  _$jA[_$g3++] = _$kb) : (_$g3 -= 3,
  _$kb = _$g3,
  _$du(),
  _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]));
else if (_$j7 <= 99)
  _$j7 <= 96 ? (_$g3 -= 4,
  _$kb = _$g3,
  _$du(),
  _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3])) : _$j7 <= 97 ? (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3]instanceof _$kb,
  _$jA[_$g3++] = _$kb) : _$j7 <= 98 ? (_$kb = _$jA[--_$g3],
  _$du(),
  _$kb = _$cR[_$fx] &= _$kb) : (_$gf[_$f1] = 92,
  _$fx = _$j4[_$gf[++_$f1]],
  _$gf[_$f1] = _$fx,
  _$cR = _$jA[--_$g3]);
else if (_$j7 <= 103) {
  if (_$j7 <= 100)
      (_$kb = _$jA[--_$g3],
      _$kb = _$jA[--_$g3] | _$kb,
      _$jA[_$g3++] = _$kb);
  else if (_$j7 <= 101) {
      _$ka = _$gf[++_$f1],
      _$kb = _$jA[--_$g3],
      _$f1++;
      for (_$kC in _$kb) {
          _$cR[_$fx] = _$kC,
          _$bl(_$$I, _$f1, _$f1 + _$ka, _$iv);
          if (_$iv[4]) {
              _$f1 = _$_0;
              break;
          }
      }
      _$f1 += _$ka - 1;
  } else
      _$j7 <= 102 ? _$kb = ++_$cR[_$fx] : (_$kb = _$jA[--_$g3],
      _$du(),
      _$cR[_$fx] = _$kb,
      _$jA[_$g3++] = _$kb);
} else
  _$j7 <= 107 ? _$j7 <= 104 ? (_$kC = _$gf[++_$f1],
  _$fx = _$gf[++_$f1],
  _$cR = _$ko[_$kC]) : _$j7 <= 105 ? (_$fx = _$gf[++_$f1],
  _$kb = _$jA[--_$g3],
  _$kb = _$kb[_$fx]) : _$j7 <= 106 ? (_$g3 -= 4,
  _$kb = _$g3,
  _$du(),
  _$cR = _$cR[_$fx],
  _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3])) : _$jA[_$g3++] = --_$cR[_$fx] : _$j7 <= 108 ? (--_$g3,
  _$cR = _$jA,
  _$fx = _$g3) : _$j7 <= 109 ? (_$ka = _$gf[++_$f1],
  _$dV = _$jA.slice(_$g3 - _$ka, _$g3),
  _$g3 -= _$ka,
  _$du(),
  _$kb = _$fH(_$cR[_$fx], _$dV)) : _$j7 <= 110 ? (_$kb = _$jA[--_$g3],
  _$du(),
  _$kb = _$cR[_$fx] -= _$kb) : (_$kb = _$jA[--_$g3],
  _$kb = _$jA[--_$g3] ^ _$kb,
  _$jA[_$g3++] = _$kb);

处理后的代码如下:

switch (_$j7) {
  case 0:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] * _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 1:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] & _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 2:
    _$jA[_$g3++] = _$gD[_$gf[++_$f1]];
    break;
  case 3:
    _$jA[_$g3++] = true;
    break;
  case 4:
    _$fx = _$gf[++_$f1];
    _$kb = _$jA[--_$g3];
    !_$kb ? (_$f1 += _$fx, ++_$g3) : 0;
    break;
  case 5:
    _$kb = _$jA[--_$g3];
    _$du();
    _$kb = _$cR[_$fx] |= _$kb;
    break;
  case 6:
    _$jA[_$g3++] = _$aG[_$gf[++_$f1]];
    break;
  case 7:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] !== _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 8:
    _$g3 -= 2;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1]);
    break;
  case 9:
    _$g3--;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$jA[_$g3++] = _$cR(_$jA[_$kb]);
    break;
  case 10:
    _$ka = _$gf[++_$f1];
    _$f1 += _$ka;
    break;
  case 11:
    _$kC = _$gf[++_$f1];
    _$jA[_$g3++] = _$dz[_$kC][_$gf[++_$f1]];
    break;
  case 12:
    _$kb = _$jA[--_$g3];
    _$iv[4] = 1;
    _$iv[5] = _$kb;
    _$f1 = _$_0;
    break;
  case 13:
    _$g3 -= 3;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]);
    break;
  case 14:
    _$ka = _$gf[++_$f1];
    _$f1 -= _$ka;
    break;
  case 15:
    _$kC = _$gf[++_$f1];
    _$jA[_$g3++] = _$ko[_$kC][_$gf[++_$f1]];
    break;
  case 16:
    _$g3--;
    _$kb = _$g3;
    _$du();
    _$kb = _$cR[_$fx](_$jA[_$kb]);
    break;
  case 17:
    _$g3--;
    _$kb = _$g3;
    _$du();
    _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb]);
    break;
  case 18:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] in _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 19:
    _$kb = _$jA[--_$g3];
    _$cR = _$jA[_$g3 - 1];
    _$cR[_$j4[_$gf[++_$f1]]] = _$kb;
    break;
  case 20:
    _$jA[_$g3++] = [];
    break;
  case 21:
    _$gf[_$f1] = 26;
    _$fx = _$gf[++_$f1];
    _$kb = _$j4[_$fx];
    _$gf[_$f1] = _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 22:
    _$kb = _$jA[--_$g3];
    _$du();
    _$kb = _$cR[_$fx] += _$kb;
    break;
  case 23:
    _$jA[_$g3++] = _$cL[_$gf[++_$f1]];
    break;
  case 24:
    _$fx = _$jA[--_$g3];
    _$cR = _$jA[--_$g3];
    break;
  case 25:
    _$kb = _$jA[--_$g3];
    _$du();
    _$cR[_$fx] = _$kb;
    break;
  case 26:
    _$jA[_$g3++] = _$gf[++_$f1];
    break;
  case 27:
    _$kC = _$gf[++_$f1];
    _$fx = _$gf[++_$f1];
    _$cR = _$dz[_$kC];
    break;
  case 28:
    _$du();
    _$jA[_$g3++] = _$cR[_$fx]();
    break;
  case 29:
    _$g3 -= 2;
    _$kb = _$g3;
    _$du();
    _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1]);
    break;
  case 30:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] > _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 31:
    _$du();
    _$cR = _$cR[_$fx];
    _$jA[_$g3++] = _$cR();
    break;
  case 32:
    _$cG(_$$I, _$gf[++_$f1], _$gf[++_$f1], _$ka = _$gf[++_$f1], _$gf[++_$f1], _$f1 + 1, _$aG, _$iv);
    _$iv[4] ? _$f1 = _$_0 : _$f1 += _$ka;
    break;
  case 33:
    _$fx = _$gf[++_$f1];
    _$cR = _$gD;
    break;
  case 34:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] != _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 35:
    _$du();
    _$cR = _$cR[_$fx];
    _$kb = _$cR();
    break;
  case 36:
    _$g3--;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$kb = _$cR(_$jA[_$kb]);
    break;
  case 37:
    _$gf[_$f1] = 92;
    _$fx = _$f3[_$gf[++_$f1]];
    _$gf[_$f1] = _$fx;
    _$cR = _$jA[--_$g3];
    break;
  case 38:
    _$kb = _$jA[--_$g3];
    _$ka = _$gf[++_$f1];
    _$kb ? 0 : _$f1 += _$ka;
    break;
  case 39:
    _$fx = _$gf[++_$f1];
    _$kb = _$jA[--_$g3];
    _$kb ? (_$f1 += _$fx, ++_$g3) : 0;
    break;
  case 40:
    _$jA[_$g3++] = {};
    break;
  case 41:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] == _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 42:
    _$kb = _$jA[--_$g3];
    _$cR = _$jA[--_$g3];
    _$jA[_$g3++] = _$cR[_$kb];
    break;
  case 43:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] < _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 44:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] === _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 45:
    _$jA[_$g3++] = _$fs[_$gf[++_$f1]];
    break;
  case 46:
    _$gf[_$f1] = 87;
    _$fx = _$f3[_$gf[++_$f1]];
    _$gf[_$f1] = _$fx;
    _$kb = _$jA[--_$g3];
    _$jA[_$g3++] = _$kb[_$fx];
    break;
  case 47:
    _$g3 -= 2;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1]);
    break;
  case 48:
    _$fx = _$gf[++_$f1];
    _$jA[_$g3++] = _$_w(_$$I._$hW[_$fx], _$iv);
    break;
  case 49:
    _$g3 -= 2;
    _$kb = _$g3;
    _$du();
    _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1]);
    break;
  case 50:
    _$kb = typeof _$jA[--_$g3];
    _$jA[_$g3++] = _$kb;
    break;
  case 51:
    _$ka = _$gf[++_$f1];
    _$dV = _$jA.slice(_$g3 - _$ka, _$g3);
    _$g3 -= _$ka;
    _$du();
    _$jA[_$g3++] = _$fH(_$cR[_$fx], _$dV);
    break;
  case 52:
    _$kb = _$jA[--_$g3];
    _$cR = _$jA[_$g3 - 1];
    _$cR[_$f3[_$gf[++_$f1]]] = _$kb;
    break;
  case 53:
    _$kb = _$jA[--_$g3];
    _$jA[_$g3++] = !_$kb;
    break;
  case 54:
    _$fx = _$gf[++_$f1];
    _$cR = _$cL;
    break;
  case 55:
    _$kb = _$cR[_$fx]++;
    break;
  case 56:
    _$iv[4] = 2;
    _$f1 = _$_0;
    break;
  case 57:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] - _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 58:
    _$jA[_$g3++] = false;
    break;
  case 59:
    _$gf[_$f1] = 26;
    _$fx = _$gf[++_$f1];
    _$kb = _$kG[_$fx];
    _$gf[_$f1] = _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 60:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] + _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 61:
    _$kb = _$jA[--_$g3];
    _$cR = _$jA[_$g3 - 1];
    _$cR.push(_$kb);
    break;
  case 62:
    _$fx = _$gf[++_$f1];
    _$cR = _$fs;
    break;
  case 63:
    _$fx = _$gf[++_$f1];
    _$cR = _$aG;
    break;
  case 64:
    ;
    break;
  case 65:
    _$gf[_$f1] = 87;
    _$fx = _$j4[_$gf[++_$f1]];
    _$gf[_$f1] = _$fx;
    _$kb = _$jA[--_$g3];
    _$jA[_$g3++] = _$kb[_$fx];
    break;
  case 66:
    _$jA[_$g3++] = null;
    break;
  case 67:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] << _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 68:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] + _$kb;
    break;
  case 69:
    _$g3 -= 5;
    _$kb = _$g3;
    _$du();
    _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3], _$jA[_$kb + 4]);
    break;
  case 70:
    _$jA[_$g3++] = _$cR[_$fx]++;
    break;
  case 71:
    _$ka = _$gf[++_$f1];
    _$g3 -= _$ka;
    _$dV = _$jA.slice(_$g3, _$g3 + _$ka);
    _$du();
    _$kb = _$cR[_$fx].apply(_$cR, _$dV);
    break;
  case 72:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] % _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 73:
    _$jA[_$g3++] = ++_$cR[_$fx];
    break;
  case 74:
    _$g3 -= 4;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$kb = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3]);
    break;
  case 75:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] >= _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 76:
    _$kb = _$gf[++_$f1];
    break;
  case 77:
    _$kb = _$cR[_$fx]--;
    break;
  case 78:
    _$fx = _$gf[++_$f1];
    _$kb = _$kb[_$fx];
    break;
  case 79:
    _$g3 -= 3;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]);
    break;
  case 80:
    _$fx = _$gf[++_$f1];
    _$jA[_$g3++] = _$kb[_$fx];
    break;
  case 81:
    _$g3 -= 4;
    _$kb = _$g3;
    _$du();
    _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3]);
    break;
  case 82:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] <= _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 83:
    _$fx = _$gf[++_$f1];
    _$kb = _$jA[--_$g3];
    !_$kb ? _$f1 += _$fx : 0;
    break;
  case 84:
    _$kb = _$jA[--_$g3];
    _$fx = _$gf[++_$f1];
    _$cR = _$ke[_$fx];
    _$ka = _$cR[_$kb];
    _$ka == _$an ? _$ka = _$gf[++_$f1] : ++_$f1;
    _$f1 += _$ka;
    break;
  case 85:
    _$du();
    _$kb = _$cR[_$fx]();
    break;
  case 86:
    _$kb = delete _$cR[_$fx];
    break;
  case 87:
    _$fx = _$gf[++_$f1];
    _$kb = _$jA[--_$g3];
    _$jA[_$g3++] = _$kb[_$fx];
    break;
  case 88:
    _$kb = _$jA[--_$g3];
    _$jA[_$g3++] = ~_$kb;
    break;
  case 89:
    _$kb = -_$jA[--_$g3];
    _$jA[_$g3++] = _$kb;
    break;
  case 90:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] >>> _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 91:
    _$kb = _$jA[--_$g3];
    _$du();
    _$kb = _$cR[_$fx] ^= _$kb;
    break;
  case 92:
    _$fx = _$gf[++_$f1];
    _$cR = _$jA[--_$g3];
    break;
  case 93:
    _$g3 -= 3;
    _$kb = _$g3;
    _$du();
    _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]);
    break;
  case 94:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] / _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 95:
    _$g3 -= 3;
    _$kb = _$g3;
    _$du();
    _$jA[_$g3++] = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2]);
    break;
  case 96:
    _$g3 -= 4;
    _$kb = _$g3;
    _$du();
    _$kb = _$cR[_$fx](_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3]);
    break;
  case 97:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] instanceof _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 98:
    _$kb = _$jA[--_$g3];
    _$du();
    _$kb = _$cR[_$fx] &= _$kb;
    break;
  case 99:
    _$gf[_$f1] = 92;
    _$fx = _$j4[_$gf[++_$f1]];
    _$gf[_$f1] = _$fx;
    _$cR = _$jA[--_$g3];
    break;
  case 100:
    _$kb = _$jA[--_$g3], _$kb = _$jA[--_$g3] | _$kb, _$jA[_$g3++] = _$kb;
    break;
  case 101:
    _$ka = _$gf[++_$f1], _$kb = _$jA[--_$g3], _$f1++;
    for (_$kC in _$kb) {
      _$cR[_$fx] = _$kC, _$bl(_$$I, _$f1, _$f1 + _$ka, _$iv);
      if (_$iv[4]) {
        _$f1 = _$_0;
        break;
      }
    }
    _$f1 += _$ka - 1;
    break;
  case 102:
    _$kb = ++_$cR[_$fx];
    break;
  case 103:
    _$kb = _$jA[--_$g3];
    _$du();
    _$cR[_$fx] = _$kb;
    _$jA[_$g3++] = _$kb;
    break;
  case 104:
    _$kC = _$gf[++_$f1];
    _$fx = _$gf[++_$f1];
    _$cR = _$ko[_$kC];
    break;
  case 105:
    _$fx = _$gf[++_$f1];
    _$kb = _$jA[--_$g3];
    _$kb = _$kb[_$fx];
    break;
  case 106:
    _$g3 -= 4;
    _$kb = _$g3;
    _$du();
    _$cR = _$cR[_$fx];
    _$jA[_$g3++] = _$cR(_$jA[_$kb], _$jA[_$kb + 1], _$jA[_$kb + 2], _$jA[_$kb + 3]);
    break;
  case 107:
    _$jA[_$g3++] = --_$cR[_$fx];
    break;
  case 108:
    --_$g3;
    _$cR = _$jA;
    _$fx = _$g3;
    break;
  case 109:
    _$ka = _$gf[++_$f1];
    _$dV = _$jA.slice(_$g3 - _$ka, _$g3);
    _$g3 -= _$ka;
    _$du();
    _$kb = _$fH(_$cR[_$fx], _$dV);
    break;
  case 110:
    _$kb = _$jA[--_$g3];
    _$du();
    _$kb = _$cR[_$fx] -= _$kb;
    break;
  case 111:
    _$kb = _$jA[--_$g3];
    _$kb = _$jA[--_$g3] ^ _$kb;
    _$jA[_$g3++] = _$kb;
    break;
}

这里贴上处理代码(这段代码由博主个人原创,转载请注明出处)

该原创代码改自前两天写的if语句转switch语句的代码,因此if转switch也是支持的

const fs = require('fs');
const parser = require("@babel/parser");
const generate = require("@babel/generator").default
const traverse = require("@babel/traverse").default
const t = require('@babel/types');

const code = getCode()
const ast = parser.parse(code, { allowReturnOutsideFunction: true })

function valueHandle(operator, value) {
  switch(operator) {
    case '<':
      return value - 1
    case '==':
    case '===':
      return value
    case '<=':
      return value
  }
}

function getIfTestValue(test) {
  if (!test) return false
  const { operator, left, right } = test
  if (!['<', '==', '===', '<='].includes(operator)) return false
  if (!t.isIdentifier(left)) return false
  if (!t.isNumericLiteral(right)) return false
  return { name: left.name, value: valueHandle(operator, right.value) }
}

function getNode(node) {
  if (!node) return []
  if (t.isIfStatement(node)) return [node]
  if (t.isBlockStatement(node)) return node.body
  if (t.isExpressionStatement(node)) return [node.expression]
  // 三元表达式
  if (t.isConditionalExpression(node)) return [node]
  // 逗号表达式
  if (t.isSequenceExpression(node)) return node.expressions
  // 赋值表达式
  if (t.isAssignmentExpression(node)) return [node]
  if (t.isEmptyStatement(node)) return [node]
  console.error(`未知类型请检查: ${node.type}`)
  return [node]
}

function getIfNode(node, ans=[], opt = {}) {
  const testValue = getIfTestValue(node?.test)
  if (testValue === false) return
  if (!opt.name) { Object.assign(opt, testValue) }
  if (testValue.name !== opt.name) return
  ['consequent', 'alternate'].forEach((key, idx) => {
    const nextNode = getNode(node[key])
    ans[testValue.value + idx] = nextNode
    // console.log(testValue.value + idx, nextNode)
    nextNode?.forEach(item => getIfNode(item, ans, opt))
  })
  return [opt.name, ans.filter(Boolean)]
}

const visitor = {
  IfStatement(path) {
    const [key, cases] = getIfNode(path.node) || []
    if (!key || cases.length <= 6) return
    const newNode = t.switchStatement(
      t.identifier(key),
      cases.map((mycase, idx) => {
        const statements = mycase.reduce((ans, item) => (
          ans.push(t.isStatement(item) ? item : t.expressionStatement(item)),
          ans
        ), [])
        if (!mycase.some(item => t.isReturnStatement(item))) {
          statements.push(t.breakStatement())
        }
        return t.switchCase(t.numericLiteral(idx), statements)
      })
    )
    path.replaceInline(newNode)
    path.skip()
  }
}
traverse(ast, visitor)
const result = generate(ast, { minified: false, concise: false, compact: false })
console.log(result.code)
FINISH

随机文章
人生倒计时
default