js逆向之补环境常用代码


//第一种 补环境的方法

let test1 = {
    name:"小红"
};

test = new Proxy(test1,{
    get(target,key){
        console.log("获取了",key + "属性");
        return target[key];
    }
})
test.name




//实战应用(注释部分的内容倒着看)


//然后继续代理,按照这种的思路。继续的寻找,不但代理对象,获取里面的属性或者方法。然后检测其返回值。
//特点是每次只能检测一个,所以,补完每一个级别的对象之后,都需要重新的进行检测
canvas = {}

let document = {
    createElement:function (val) {
        if (val = "canvas"){
            return canvas
            //到浏览器中看一看需要输入哪些内容
        }

    }
};
//返回的是一个document对象,那么就设置一个空对象,看一看从这个空对象里面取了哪些值



//找到确是环境中缺失的属性之后,然后再函数中不传参数,但是打印参数。通过这样的方式来获取环境中使用的参数
// let document = {
//     createElement:function () {
//         console.log(arguments)
//     }
// };


document = new Proxy(document,{
    get(target,key){
        console.log("获取了",key + "属性");
        return target[key];
    }
})
document.createElement()
//就可以检测这里面调用了document中的哪些属性





//进阶的使用
//吐环境
function proxy(proxy_array){
    for(let i = 0;i<proxy_array;i++){
        eval(proxy_array[i] + ' = new Proxy(' + proxy_array[i] + ',{ ' +
            'get(target,key){ ' +
            'debugger;' +
            'console.log("====================")'+
            'console.log("获取了",'+ proxy_array[i] + ' 的key属性"); ' +
            'console.log("====================")'+
            'return target[key]; }')
    }
}
//常用的proxy_array
var proxy_array = ["window","document","location","navigator"]
proxy(proxy_array)


//如果需要补XMLHttpRequest、ActiveXObject,直接给空对象不用管
//可以用typeof 判断数据类型



//第二种补环境的方法
//代码可以混淆的部分  形参、实参、变量名等可以变的东西
//最终的结果不会混淆
//所以,规避代码中的变量名和方法。需要补的内容是浏览器中有的东西,而不是代码中有的东西
//所以动态的代码,通过补环境是一个很好的方法
//检测音频指纹的代码
//等待页面加载后的调用
//this 改写成that  然后写一个定时器。然后就可以实现自动的执行

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM