逆向效率翻倍!支持动态Hook+AST解析的浏览器神器
大家好,今天分享一个 web 逆向神器,它是一款包含众多工具的 JS逆向工具箱。
v_jstools
它是一个浏览器拓展,它并不是一款单一的工具,而是集 AST、hook
、代码注入、请求修改等等功能于一体的工具箱。
安装
它的代码是开源的,地址在这里,因为它没有发布到 Chrome 应用商店上,所以在安装的时候,需要将它的代码 clone
到本地。
1 | git clone https://github.com/cilame/v_jstools |
然后打开 Chrome 的拓展程序页面,选择加载已解压的拓展程序。
选择刚才的文件夹,确定后拓展就安装好了。
使用hook
打开拓展程序,可以按需启用所需要的功能。一般我会使用 hook
功能,需要打开前两个开关:挂钩总开关和输出日志开关。打开后点击打开配置页面按钮
最上面一排按钮为拓展支持的所有功能,现在选中的是 DOM
对象 hook
配置,可以支持 hook
常见的 Function
,eval
,debugger
,settimeout
,random
,time
等等函数,同时也支持只对某个感兴趣的 JS 文件进行 hook
,从而避免 hook
所有文件导致性能问题和数据干扰。
在最下面的红框里面也有 cookie
相关 hook
代码,还有 JSON
,decodeURI
,base64
等等函数的 hook
,常用的函数很齐全了。
示例 hook
这里我演示一下 hook
JSON
相关函数的功能,打开这两个开关,使用之前的爬虫练习平台作演示。
刷新页面,会发现已经成功的注入了 hook
代码,并且输出了 hook
结果,点击后面的 VM
开头的地址,会直接转到 hook
代码的位置。
如果想要找到找到 JSON
函数的调用位置,可以在此处打断点,顺着调用栈即可找到加密位置。
使用 AST
AST 混淆解密界面,已经内置了常见的混淆和解混淆方法,可以直接一键解除某些特定的混淆,并且还可以对代码进行压缩,并且支持在浏览器中直接写 AST 代码,无需本地 nodejs
环境,在某些特殊的环境下兼容性更好。
点击打开本地 AST 页面按钮,会打开一个 AST 页面,在这里可以直接使用 AST 代码对 JS 源码进行处理。页面一共分为四个部分,上半部分的左右两侧分别是原始的 JS 代码和 JS 代码对应的 AST 语法树。下半部分的左右两侧分别是 AST 代码和经过 AST 代码处理后得到结果 JS。图中使用 AST 的方式将所有的函数节点名字进行了反转。
代码模版(RPC)
代码模版(RPC)功能可以生成 RPC server
端代码,通过 JSRPC
的方式直接调用对应的 JS 函数,而无需补环境或者扣代码,JS 直接运行在浏览器中,类似于之前的 so RPC 调用的方案,通过外部主动调用的方式获取加密结果或者解密结果。
修改返回值
拓展还支持修改特定请求的返回值或者做本地文件映射,类似本地文件映射的功能其实 Chrome 也自带了,不过动态修改请求的功能一般只有抓包软件才有,拓展在这里也支持动态修改了。
注入代码
如果有其他想要注入的代码,可以在此注入。
它有点类似于油猴脚本,可以在页面加载前先注入代码,然后再运行页面原有的 JS 脚本。可以在此进行 hook
操作或者注入 RPC
代码或者执行其他所需的操作。
自定义
v_jstools 提供的功能还有很多,当然可能有些功能并不能满足所有人的需求,没关系,它的代码是开源的,如果某些功能不满足需求,可以自行修改。
总结
v_jstools 的功能还有很多,无论 JS 逆向新手还是老手,这款拓展都可以大大提高 JS逆向的效率,感兴趣的那小伙伴可以尝试一下。
本文章首发于个人博客 LLLibra146’s blog
本文作者:LLLibra146
更多文章请关注公众号 (LLLibra146):
版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!