zoukankan      html  css  js  c++  java
  • 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] }'

    }

    完美

  • 相关阅读:
    ==和equals的区别
    Java标准库定义的常用异常
    java.lang.ArithmeticException: / by zero
    类的设计
    预处理&枚举&其他
    内存管理
    指针和字符串
    指针
    数组
    流程控制语句
  • 原文地址:https://www.cnblogs.com/wuxianyu/p/14543607.html
Copyright © 2011-2022 走看看