JavaScript反混淆插件十:删除DeadCode

    在还原部分著名的 obfuscator 混淆代码后,会遗留类似下面这样的代码:

if ("jZPVk" !== "boYNa") {
    var _0x115fe4 = _0x46f96b ? function() {
        var _0x42130b = {
            "mLuUC": "2|1|5|0|4|3"
        };


        if ("esUCW" !== "YVaOc") {
            if (_0x64f451) {
                if ("VPudA" !== "PlTuN") {
                    var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);


                    _0x64f451 = null;
                    return _0x2a304c;
                } else {
                    function _0x2d452d() {
                        var _0x3f7283 = "2|1|5|0|4|3"["split"]('|')
                          , _0x4c2460 = 0;


                        var _0x17e744 = _0x5d33d5["constructor"]["prototype"]["bind"](_0x476920);


                        var _0x219476 = _0x115ed3[_0x53f8ef];


                        var _0x268b00 = _0x1dbdcc[_0x219476] || _0x17e744;


                        _0x17e744["__proto__"] = _0x559202["bind"](_0x4e83d7);
                        _0x17e744["toString"] = _0x268b00["toString"]["bind"](_0x268b00);
                        _0x15fb48[_0x219476] = _0x17e744;
                    }
                }
            }
        } else {
            function _0x2b55e5() {
                sloYzO["PgbPP"](_0xb1234d, 0);
            }
        }
    }
    : function() {}
    ;


    _0x46f96b = false;
    return _0x115fe4;
} else {
    function _0x4e016() {
        sloYzO["RgqlK"](_0x6358d1);
    }
}

可以看到,有很多的 类似下面的代码:

if ("jZPVk" !== "boYNa")
{
//...........
}
else
{
//...
}

这里的if条件恒为真,所以永远不会执行else里面的代码,我愿意称其为 DeadCode。在简化代码时,肯定会将其删除。

插件功能

删除代码中永远不会执行的代码片段。

处理实例

处理前:

if ("jZPVk" !== "boYNa") {
    var _0x115fe4 = _0x46f96b ? function() {
        var _0x42130b = {
            "mLuUC": "2|1|5|0|4|3"
        };


        if ("esUCW" !== "YVaOc") {
            if (_0x64f451) {
                if ("VPudA" !== "PlTuN") {
                    var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);


                    _0x64f451 = null;
                    return _0x2a304c;
                } else {
                    function _0x2d452d() {
                        var _0x3f7283 = "2|1|5|0|4|3"["split"]('|')
                          , _0x4c2460 = 0;


                        var _0x17e744 = _0x5d33d5["constructor"]["prototype"]["bind"](_0x476920);


                        var _0x219476 = _0x115ed3[_0x53f8ef];


                        var _0x268b00 = _0x1dbdcc[_0x219476] || _0x17e744;


                        _0x17e744["__proto__"] = _0x559202["bind"](_0x4e83d7);
                        _0x17e744["toString"] = _0x268b00["toString"]["bind"](_0x268b00);
                        _0x15fb48[_0x219476] = _0x17e744;
                    }
                }
            }
        } else {
            function _0x2b55e5() {
                sloYzO["PgbPP"](_0xb1234d, 0);
            }
        }
    }
    : function() {}
    ;


    _0x46f96b = false;
    return _0x115fe4;
} else {
    function _0x4e016() {
        sloYzO["RgqlK"](_0x6358d1);
    }
}

处理后:

var _0x115fe4 = _0x46f96b ? function() {
    var _0x42130b = {
        "mLuUC": "2|1|5|0|4|3"
    };
    {
        if (_0x64f451) {
            {
                var _0x2a304c = _0x64f451["apply"](_0x40f1bc, arguments);


                _0x64f451 = null;
                return _0x2a304c;
            }
        }
    }
}
: function() {}
;


_0x46f96b = false;
return _0x115fe4;

通过比对发现,处理后的代码,可读性明显提升了不少。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值