zoukankan      html  css  js  c++  java
  • 伪造toString

    (() => {
        const $toString = Function.toString;
        const myFunction_toString_symbol = Symbol('('.concat('', ')_', (Math.random() + '').toString(36)));
        const myToString = function () {
            return typeof this == 'function' && this[myFunction_toString_symbol] || $toString.call(this);
        };
    
    
        function set_native(func, key, value) {
            Object.defineProperty(func, key, {
                "enumerable": false,
                "configurable": true,
                "writable": true,
                "value": value
            })
        }
    
        delete Function.prototype['toString'];
    
        set_native(Function.prototype,"toString",myToString);
    
        set_native(Function.prototype.toString,myFunction_toString_symbol,"function toString() { [native code] }");
    
        safeFunction = (func) => {
            set_native(func,myFunction_toString_symbol,`function ${func.name || ''}() { [native code] }`);
        };
    }).call();
    
    //-------------------------------------
    window = function (){};
    safeFunction(window);
    console.log(window.toString());
  • 相关阅读:
    物质的物理属性·基础整理
    点分治
    洛谷 P3806 【模板】点分治1
    因式分解
    小石潭记
    反演原理及二项式反演
    《庄子》二则
    FFT快速傅里叶变换
    mysql 密码相关
    django基础
  • 原文地址:https://www.cnblogs.com/angdh/p/14977896.html
Copyright © 2011-2022 走看看