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