js原型链hook

比如我们想对对字符串进行split()

我们可以这么写

String.prototype.split_bk=String.prototype.split;

String.prototype.split = function(val){

str = this.toString()
debugger;
return str.spilt_bk(val)

}

最后由于我们String的原型链已经做了修改,所以要在 最后结束的时候做个伪装

由于原生代码是这样的

 

伪装的时候这么写 String.prototype.split.toString=function(){
        
    }

这时候我们可以定义一个字符串a进行尝试

a='加密字符串'

a.split("加密")

这时候就会加入debugger'

 

 

 

 

 

 最后整体的原生代码的hook方式完成

String.prototype.split_bk=String.prototype.split;

 


String.prototype.split = function(val){

//这一步操作是拿到str本身字符串。一整串 ,最后 返回str.split_bk(val) val是你触发的参数,比如说你想切割加密参数中的加密,val传进来的值就是加密

 

str = this.toString()
debugger;
return str.spilt_bk(val)

}
String.prototype.split.toString=function(){


return "function split() { [native code] }"

}

 Hook Number Object Array -push .shift 都可以使用同样的 方式实现

比如Array

Array.prototype.slice_bk=Array.prototype.slice

 

Array.prototype.slice=function(val){

arr=this.toString()
debugger;
return arr.slice_bk;

}

Array.prototype.slice.toString=function(){
return 'function slice() { [native code] }'

}

完美

posted @ 2021-03-16 15:06  吴先雨  阅读(614)  评论(0编辑  收藏  举报