【2.0】Js逆向补充之Ob混淆

发布时间 2023-10-16 22:20:29作者: Chimengmeng

【一】什么是Ob混淆

  • OB 混淆是指将 JavaScript 代码中的变量名、函数名、字符串等替换为无意义的字符串,从而增加代码的保护性和防止代码的逆向分析。
  • 此外,它还可以在代码中添加死代码、无用的函数等,增加代码的复杂度和难以理解性,从而增加代码的保密性。

【二】Ob混淆演示

【1】原始代码

function hi() {
  console.log("Hello World!");
}
hi();

【2】混淆代码

var _0x30bb = ['log', 'Hello\x20World!']; //列表元素(被混淆的真实代码部分)也有可能会被base64等机制编码

//该函数是将_0x30bb列表进行了元素进行了移位,将列表变为了['Hello\x20World!','log']
(function (_0x38d89d, _0x30bbb2) {
    var _0xae0a32 = function (_0x2e4e9d) {
        while (--_0x2e4e9d) {
            _0x38d89d['push'](_0x38d89d['shift']());
        }
    };
    _0xae0a32(++_0x30bbb2);
}(_0x30bb, 0x153)); //在浏览器Console中加载执行该自运行函数后,打印_0x30bb列表查看移位结果

//该函数为解密函数(用来还原真实的代码)
var _0xae0a = function (_0x38d89d, _0x30bbb2) {
    _0x38d89d = _0x38d89d - 0x0;
    var _0xae0a32 = _0x30bb[_0x38d89d];
    return _0xae0a32;
};
//ob混淆的js代码
function hi() {
    console[_0xae0a('0x1')](_0xae0a('0x0'));
    //使用_0xae0a函数还原代码:_0xae0a('0x1')还原为了log,因此在OB混淆中该函数使用的频率最高。
}

hi();