如何解密十六进制javascript代码?

逆向工程 去混淆 javascript 十六进制
2021-06-13 11:36:25

这里有人已经成功对 100% 的“十六进制”Javascript 代码进行了反混淆?

例如:

var _0x22bc92 = function() {
    var _0x26938d = !![];
    return function(_0x100751, _0x54d399) {
        var _0x1a7790 = _0x26938d ? function() {
            if (_0x54d399) {
                var _0x28145f = _0x54d399[_0x4734('0x0')](_0x100751, arguments);
                _0x54d399 = null;
                return _0x28145f;
            }
        } : function() {};
        _0x26938d = ![];
        return _0x1a7790;
    };
}();

如果是,我该怎么做?

1个回答

这些十六进制值可以代表任何东西。寻找将十六进制转换为文本(考虑各种格式)、十进制等的在线转换器看看结果是否有意义。如果没有,那么它们可能会被 100% 混淆,无法恢复任何有意义的名称。

因此,只要在您看到重复出现的名称的地方自己创建有意义的名称即可。例如,看看您看到值_0x26938d(我已更改为_0x26938d_CHANGE_ME)出现在下面的次数。只需将所有这些事件更改为您自己的名字。通读代码和/或执行代码以了解其行为后,您可以为它们应用更有意义的名称。

var _0x22bc92 = function() {
    var _0x26938d_CHANGE_ME = !![];
    return function(_0x100751, _0x54d399) {
        var _0x1a7790 = _0x26938d_CHANGE_ME ? function() {
            if (_0x54d399) {
                var _0x28145f = _0x54d399[_0x4734('0x0')](_0x100751, arguments);
                _0x54d399 = null;
                return _0x28145f;
            }
        } : function() {};
        _0x26938d_CHANGE_ME = ![];
        return _0x1a7790;
    };
}();