首页 > 其他分享 >v_jstools js逆向分析工具

v_jstools js逆向分析工具

时间:2023-08-02 17:57:00浏览次数:46  
标签:混淆 插件 code 逆向 代码 ast js hook jstools

1.工具地址:

https://github.com/cilame/v_jstools

2.下载文件

文件下载下来以后,复制到桌面,然后解压到当前文件夹,会看到一个  v_jstools-main  的文件夹。

3.插件安装

谷歌浏览器地址栏输入如下 url,打开扩展程序页面,并打开开发者模式:

chrome://extensions/

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

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

 

4.插件功能

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

第一步:

 第二步:

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

 

可以看到,有三个功能。

 

第一个功能是 dom对象hook ,它内置了很多常见方法的hook,如eval,cookie,Function等,想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的解密混淆,如图:

 

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

 

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

 

标签:混淆,插件,code,逆向,代码,ast,js,hook,jstools
From: https://www.cnblogs.com/yoyo1216/p/17601370.html

相关文章

  • 再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
    今天要分享的问题就是:如何在JS中检查一个变量的类型?先上结论:如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。在ECMAScript规范中,共定义了7种数据类型,分为基本类型和引用类型两大类。基本类型也称为简单类型,按值......
  • js 发起get请求
      leta=document.createElement('img');a.src='/_xxxxxx=1&e=0.5609369440726193'在浏览器中,当创建一个图片元素并设置src属性时,浏览器会根据该路径发送一个HTTP请求,请求该路径对应的资源文件。这个资源文件可以是一张图片、一个音频文件、一个视频文件或者其他可以......
  • MySQL8.0 JSON数据类型
    (目录)JSON数据类型MySQL8.0支持原生的JSON数据类型。JSON数据类型存在以下优点自动验证存储在json列中的JSON文档,无效文档会产生错误优化存储格式。json列中的文档被转换为内部格式,可以直接对文档元素进行快速读取访问。JSON值JSON值类型在MySQL中,JSON值可以是字符串/数......
  • JS 富文本编码、解码
    <rich-text:selectable="true":nodes="decodedText"></rich-text>constencodedText='<imgsrc="https://zhxkj-1309150347.cos.ap-guangzhou.myqcloud.com/mall/detail/20221229162213_8539.jpg"alt="&quo......
  • js去掉html中所有的标签、空格和回车换行符只保留文本
    replaceText(val){if(val!=null&&val!=""){varre1=newRegExp("<.+?>|&.+?;","g");//匹配html标签的正则表达式,"g"是搜索匹配多个符合的内容varmsg=val.replace(re1,"");//执行替换成空字符msg=......
  • js上传文件到服务器指定文件夹问题
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • post 传递参数 只有data json 和**kwargs, 不能是params
    importrequestsHOST='https://ip.com'URL='/posts/'url=HOST+URLjson={"title":"foo","body":"bar","userId":1}res=requests.post(url,json=json)print(res.json())print(......
  • Json Web Token
    什么是JsonWebTokenJWT代表JSONWebToken,是一种用于在网络应用中传递信息的安全、紧凑的标准。它主要用于身份验证和授权,并且被广泛用于前后端分离的应用和单点登录系统。JWT由三部分组成,通过点号(.)分隔,分别是:Header(头部):包含了两部分信息,令牌的类型(通常是"JWT")和所使用的......
  • JS优化技巧,解决冗余代码
    1.使用箭头函数简化函数定义//传统函数定义functionadd(a,b){returna+b;}//箭头函数简化constadd=(a,b)=>a+b;2.使用解构赋值简化变量声明//传统变量声明constfirstName=person.firstName;constlastName=pers......
  • react源码解析手写ReactDom.js和React
    前言大家好我是歌谣今天给大家带来react源码部分的实现创建项目首先npxcreate-react-appxxx降为17"dependencies":{"@testing-library/jest-dom":"^5.11.4","@testing-library/react":"^11.1.0","@testing-library/user-event&......