Chrome拓展开发之JS自动注入Hook

Chrome拓展开发之JS自动注入Hook

Chrome拓展开发之JS自动注入Hook

接下来,我们需要编写一个content_scripts脚本文件,让它在页面DOM渲染之前自动注入JS脚本文件,从而达到过反调试的效果。

我们在页面创建一个script节点,里边放入我们注入的代码。
实现了Hook Cookies,JSON.stringify,JSON.parse,eval和debugger以及检测Chome安装的插件。

(function(){
	'use strict';
	var s=document.createElement('script');
	
	//Hook Cookies
	s.innerHTML=`
		var cookie_cache=document.cookie;
		Object.defineProperty(document,'cookie',{
			get:function(){
					return cookie_cache;
				},
			set:function(val){
					console.log("setting cookie:",val);
					//debugger;
					var cookie=val.split(";")[0];
					var ncookie=cookie.split("=");
					var flag=false;
					var cache=cookie_cache.split(";");
					cache=cache.map(function(a){
						if (a.split("=")[0]==ncookie[0]){
								flag=true;
								return cookie;
							}
							return a;
						})
					cookie_cache=cache.join(;");
					if(!flag){
						cookie_cache+=cookie+";";
					}
					this._value=val;
					return cookie_cache;
				}
		});	

		//Hook JSON stringify
		var rstringify=JSON.stringify;
		JSON.stringify=function(a){
			console.log("Detect JSON.stringify:",a);
			debugger;
			return rstringify(a);
		}
		
		//Hook JSON parse
		var strparse=JSON.parse;
		JSON.parse=function(b){
			console.log("Detect JSON.parse:",b);
			return strparse(b);
		};
		//Detect Chrome plugins
		var plugins_cache=window.navigator;
		Object.defineProperty(navigator,"plugins",{
			set:function(val){
				console.log("navigator set:",val);
				debugger;
				},
			get:function(){
				console.log("get plugins");
				//debugger
				return plugins_cache;
				},
		});
		
		//Hook eval
		var _eval=eval;
		eval=function(c){
			_eval(c.replace("debugger","");
		};
		eval.toString=_eval.toString;
		
		//Hook Function
		var _construtor=constructor;
		Function.prototype.constructor=function(d){
			if (d=="debugger"){
				console.log("constructor:",d);
				return null;
			}
			return _construtor(d);
		};
`		
})

在实际开发中,并没有万能的JS Hook代码,我们需要根据具体的业务逻辑来微调上边的JS代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NoAttack

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值