如何hook location相关的方法

admin 2025年4月10日21:58:18评论1 views字数 1301阅读4分20秒阅读模式

如何hook location相关的方法

浏览器hook函数或对象方法时,需要有一个前提条件,即这个方法是可修改的。

例如hook JSON.stringify

let _rawstringify = JSON.stringify;JSON.stringify = function(...args){let ret = _rawstringify.apply(this,args);console.log(args, ret);return ret;}

上述这个代码即可hook

根据上面的思路 该如何hook location.href呢

// 1. 拿到对应的原始函数let location_href_set = Object.getOwnPropertyDescriptor(location,"href").set;// 2. 重写属性Object.defineProperty(location,"href",{set:function(value){// 自定义逻辑debugger;// 下断点returnlocation_href_set(value);}});/* 报错了VM434:1 Uncaught TypeError: Cannot redefine property: href    at Function.defineProperty (<anonymous>)    at <anonymous>:1:8*/

分析报错原因

JSON.stringify是可配置的,而location.href 是不可配置的

Object.getOwnPropertyDescriptor(location,"href"); //  configurable: false// {enumerable: true, configurable: false, get: ƒ, set: ƒ}Object.getOwnPropertyDescriptor(JSON,"stringify");// configurable: true// {writable: true, enumerable: false, configurable: true, value: ƒ}

解决方法

1.通过AST去拦截,测试页面:https://www.ldvmp.com

// 原始代码如下location.href = "https://m.ldvmp.com";// 遍历AST节点,拦截所有的上述语法结构,并进行过滤hookLocationHref = function(obj, key, value){if(obj === location && key === "href"){// 自定义逻辑debugger;// 下断点      location.href = value;    }return obj[key] = value;}hookLocationHref(location,"href""https://m.ldvmp.com");
如何hook location相关的方法

2.魔改chromium, 将configurable属性改成true

如何hook location相关的方法

魔改的chromium可以加星球获取哈~~~

如何hook location相关的方法
如何hook location相关的方法

原文始发于微信公众号(LuckyFuture):如何hook location相关的方法

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月10日21:58:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何hook location相关的方法https://cn-sec.com/archives/3908726.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息