js逆向系列教程-hook技术

目录

        1、前言

        2、hook方法

        3、hook XHR请求

        4、hook cookie


前言

前面了解了浏览器开发者工具并能快速定位数据包接口,后面就是要分析该接口是不是存在加密点,也就是找到需要逆向的位置。

通常需要逆向的位置一般在Request headers、Payload、Response和Cookie中。下图中数据包的url的查询关键字中有一个analysis的是无法看懂的,这个就是密文,需要着重分析。

hook方法

hook技术可以改变js函数的执行行为,针对一些加密函数可以去快速定位。Javascript中的JSON.stringnify和JSON.parse两个方法是处理JSON数据常用的方法,某些站点传输响应数据时会用到这两个方法。

(function() {
    var _parse = JSON.parse;
    JSON.parse = function(ps) {
        console.log("Hook JSON.parse ——> ", ps);
        debugger;
        return _parse(ps);  // 不改变原有的执行逻辑 
    }
})();

将上述代码放入Console控制台运行即可。这里将JSON.parse赋值给_parse变量,当调用了JSON.parse方法时则输出相应的JSON字符串并执行debugger语句,会立即断下 ,且不改变原来函数的执行逻辑。其他方法的hook代码可以以此为模板进行编写。

hook XHR请求

在Javascript中,可以利用XMLHttpRequest.open方法发送xhr请求,因此可以对其进行hook。

经过脱敏的练习网址:aHR0cHM6Ly93d3cucWltYWkuY24v

在payload中存在analysis,是一个密文,则需要对其进行逆向分析。可以看到该数据包是一个xhr请求,可以尝试去hook XMLHttpRequest.open方法。

(function () {
    var open = window.XMLHttpRequest.prototype.open;
    window.XMLHttpRequest.prototype.open = function (method, url, async) {
        if (url.indexOf("analysis") != -1) {
            debugger;
        }
        return open.apply(this, arguments);
    };
})();

url.indexOf("analysis") != -1这行代码表示在url中存在analysis,此时会执行debugger语句,立即断住。此时向上跟栈,可以定位加密位置。通过该方法可以很快地定位加密点。

关于xhr请求,XMLHttpRequest.send, XMLHttpRequest.setRequestHeader和XMLHttpRequest.onreadystatechange这几个方法很重要,需要重点关注。

同时我们也要注意发包的流程,首先初始化javascript>>执行加密逻辑>>发包>>返回相应>>解密响应体。执行加密逻辑可能会在请求Interceptors (拦截器)中进行。

hook cookie

对于一些cookie反爬,则可以hook相应的cookie来进行定位。hook cookie的代码是固定的,可以直接拿来使用。

练习网址:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v

cookie是以键值对的形式存储的,其中键名为v的值是需要逆向分析的。可以使用以下代码进行hook。

(function () {
  var cookieTemp = '';
  Object.defineProperty(document, 'cookie', {
    set: function (val) {
      if (val.indexOf('v') != -1) {
        debugger;
      }
      console.log('Hook捕获到cookie设置->', val);
      cookieTemp = val;
      return val;
    },
    get: function () {
      return cookieTemp;
    },
  });
})();

当document.cookie中含有键名为v时,则会执行debugger语句。此时可以快速定位加密位置。

总结

这篇文章主要是利用hook技术帮助我们实现快速定位加密位置,成功定位加密位置基本上就已经逆向成功了50%。要熟练使用该技术,需要有一定的js语法基础,因此需要认识一些常用的js函数。当然定位方式有许多种,我们下次再说。创作不易,觉得有收获的同志记得点个关注哈。有问题欢迎留言~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chem_d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值