如何取消混淆 JavaScript 从 const 和一堆变量开始

How to un-obfuscate JavaScript starting with const and a bunch of vars

您好,我找到了这个扩展,想查看脚本本身的内容以检查实际执行的操作。我尝试通过各种 javascript de/un-obfuscators 和 none 来编写脚本。

请告诉我一个可行的方法或将去混淆后的 JS 发给我。

CODE HERE

混淆某些东西的意义在于它不能被逆转。它已删除所有名称并有意缩小以使其尽可能难。

您可以部分反转它,但它的可读性不高。

例如,如果你混淆了这个

function hi(first, second) {
  const third = first + second
  return third
}
hi(1, 2);

你会得到这样的东西。

function hi(_0x850806,_0x3f2655){const _0x2231a6=_0x850806+_0x3f2655;return _0x2231a6;}hi(0x1,0x2);

由于这仅使用原始功能,因此很容易将其反转为

function hi(_0x850806, _0x3f2655) {
  const _0x2231a6 = _0x850806 + _0x3f2655;
  return _0x2231a6;
}
hi(0x1, 0x2);

但是,如果你使用一些更复杂的函数(例如Array.includes)。像这样

function hi(first, arr) {
  if (arr.includes(first)) {
    console.log('true')
  } else {
    console.log('false')
  }
}

const res = hi(1, [1, 2, 3]);

这可以混淆为

const _0x41ab=['includes','log','true'];(function(_0x4972c4,_0x6d8a76){const _0x4e2cf3=function(_0x383eb3){while(--_0x383eb3){_0x4972c4['push'](_0x4972c4['shift']());}};_0x4e2cf3(++_0x6d8a76);}(_0x41ab,0x1d7));const _0x4ad9=function(_0x4972c4,_0x6d8a76){_0x4972c4=_0x4972c4-0x0;let _0x4e2cf3=_0x41ab[_0x4972c4];return _0x4e2cf3;};function hi(_0x5b3f5d,_0x577a76){if(_0x577a76[_0x4ad9('0x0')](_0x5b3f5d)){console['log'](_0x4ad9('0x2'));}else{console[_0x4ad9('0x1')]('false');}}const res=hi(0x1,[0x1,0x2,0x3]);

整理后得到这个。

const _0x41ab = ['includes', 'log', 'true'];
(function(_0x4972c4, _0x6d8a76) {
  const _0x4e2cf3 = function(_0x383eb3) {
    while (--_0x383eb3) {
      _0x4972c4['push'](_0x4972c4['shift']());
    }
  };
  _0x4e2cf3(++_0x6d8a76);
}(_0x41ab, 0x1d7));
const _0x4ad9 = function(_0x4972c4, _0x6d8a76) {
  _0x4972c4 = _0x4972c4 - 0x0;
  let _0x4e2cf3 = _0x41ab[_0x4972c4];
  return _0x4e2cf3;
};

function hi(_0x5b3f5d, _0x577a76) {
  if (_0x577a76[_0x4ad9('0x0')](_0x5b3f5d)) {
    console['log'](_0x4ad9('0x2'));
  } else {
    console[_0x4ad9('0x1')]('false');
  }
}
const res = hi(0x1, [0x1, 0x2, 0x3]);

如您所见,此代码段将提供与未混淆代码相同的输出,但是更难阅读。

现在想象一下将其应用到一个大项目中,您就会明白为什么这几乎是不可能的。