js逆向之另類思路扣代碼

js逆向之另類思路扣代碼

海綿 平常學python
常常js分析的人來講有些網站檢測瀏覽器指紋是很常見的事,可是咱們一點一點分析是很費時間,費腦筋的。python

咱們扣代碼的結果是咱們要調用他的加密或解密或某個值的算法,當咱們把他的算法扣下來執行,正常狀況下是沒問題的,可是若是他計算了瀏覽器指紋,那基本上你除了完整的分析別無他法,今天咱們來說一個hook劫持。固然我只講原理,具體大家本身研究琢磨。

首先介紹一下這個es6的特性Proxy 對象用於定義基本操做的自定義行爲(如屬性查找,賦值,枚舉,函數調用等)。
簡單來講就是咱們能夠徹底代理某個對象,基於這個對象的全部操做都會被攔截下來,可是他的內部對象操做攔不下來,好比:es6

a={b:function(){return "123"}}

a = new Proxy(a, {
    get: function(target, key, receiver) {
        console.log(target, key, receiver);
        return target[key];
    },
    set: function(target, key, value, receiver) {
        console.log(target, key, value, receiver);
        target[key] = value;
    }
});

js逆向之另類思路扣代碼

當咱們調用a.b 就用過代理攔截下來,可是
js逆向之另類思路扣代碼
當咱們:a.b.c咱們發現.c並無攔截到,那是由於.c是屬於b對象,並不能嵌套攔截,若是有須要咱們能夠嵌套:好比
js逆向之另類思路扣代碼算法

a={b:{c:function(){return "123"}}}

a = new Proxy(a, {
    get: function(target, key, receiver) {
        console.log(target, key, receiver);
    if(target[key] instanceof Object){  
      return new Proxy(target[key],{
        get:function(a,b,c){
          return a[b];
        },set:function(a,b,c,d){
          a[b] = c;
        }
      })
    }
        return target[key];
    },
    set: function(target, key, value, receiver) {
        console.log(target, key, value, receiver);
        target[key] = value;
    }
});

這樣的話就能夠嵌套,看到這裏大家是否是明白了,
假如他有一段代碼咱們摳出來要看他是否是有指紋計算,咱們能夠這樣寫瀏覽器

window = {};
window = new Proxy(window, {
    get: function(target, key, receiver) {
        console.log(target, key, receiver);
        return target[key];
    },
    set: function(target, key, value, receiver) {
        console.log(target, key, value, receiver);
        target[key] = value;
    }
});
navigator= {};
navigator= new Proxy(navigator, {
    get: function(target, key, receiver) {
        console.log(target, key, receiver);
        return target[key];
    },
    set: function(target, key, value, receiver) {
        console.log(target, key, value, receiver);
        target[key] = value;
    }
});

咱們僞造window對象而後它裏面只要是基於window的操做咱們都會攔截下來,而後處理,看到這裏你們都明白了,可是咱們開個腦洞基於這個proxy的更有趣的玩法,既然他能攔截全部操做,那咱們就能夠基於這個僞造一個真實的瀏覽器環境,不過實現起來工做量那就不小了,只能是缺啥補啥。ide

相關文章
相關標籤/搜索