1、下载和安装插件

这是一款浏览器插件,功能非常的nice

工具地址:https://github.com/cilame/v_jstools

浏览器打开上面的网站后,点击 code 按钮,选择 Download ZIP 选项,将文件下载下来,然后解压,会看到一个  v_jstools-main  的文件夹。

谷歌浏览器地址栏输入:chrome://extensions/  打开扩展程序页面,并打开开发者模式。如果是其他浏览器,请使用菜单栏打开。

打开后,点击左上角的 加载已解压的扩展程序 按钮,然后选择 v_jstools-main  文件夹,如图:

在选择文件夹后,插件就已经加载进来了。

2、插件功能

在扩展程序中,打开该插件,看看支持哪些功能:

 

javascript解释器语言 js解析器_ecmascript

 

javascript解释器语言 js解析器_javascript解释器语言_02

 打开配置页面后,来到这里:

javascript解释器语言 js解析器_javascript_03

可以看到,有三个功能。 

dom对象hook

第一个功能是 dom对象hook,它内置了很多常见方法的hook,如eval,cookie,Function等,想hook哪个方法,直接打钩即可,非常的方便。有了这个,再也不用写油猴脚本啦。

ast hook替换

第二个功能是 ast hook替换,顾名思义,就是拦截某个js代码,通过ast处理后,再返回ast处理后的代码,让混淆代码见鬼去吧。

它给的示例代码是这个:

function fetch_hook(code, url) {
    var ast = parser.parse(code);
    
    function removedebugger(path) {
        path.replaceWith(t.identifier("/*debugger*/"))
    }
    traverse(ast, {
        DebuggerStatement: removedebugger
    });
    var {code} = generator(ast, {
        jsescOption: {
            minimal: true,
        }
    });
    return code
}

这里简单说一下, fetch_hook 函数 接受2个参数,可以不用理会,如果你想hook特定的url,可以在函数的首行加入这样一段代码:

if (url.indexOf("https://www.xxx.com.cn/xxx.js") == -1)
{
    return code // 检测到不是这个 url 就直接返回原始代码
}

再就是编写 ast 插件了,按照这样下就好:

function removedebugger(path) {
    path.replaceWith(t.identifier("/*debugger*/"))
}
traverse(ast, {DebuggerStatement: removedebugger});

先写方法,再遍历,也可以按照我星球里的方式进行编写,都是一样的。

不过在我使用了几次以后,还是觉得线下处理混淆代码香,当然要看你的使用场景了

AST 的解密混淆

第三个功能是一些 AST的解密混淆,如图:

javascript解释器语言 js解析器_javascript解释器语言_04

 把混淆代码复制到上面的白色框中,点击对应的按钮即可解混淆,也是非常的方便。这里能解混淆的有 sojson,ob混淆,jsfuck以及压缩代码等,都是比较常用的功能。

试用了一番,可以还原最新版的ob混淆,效果还是很棒的。当然一些修改特征了的代码无法还原,这个要做到通杀确实有些难度。