天天看點

js逆向筆記

1.nodejs運作js的時候

navigator如果找不到可以可設定為空對象

var navigator={};
           

2.使用nodejs如果window對象找不到的時候

可以使用jsdom子產品

3.頂層代碼調用的對象的this

浏覽器裡表示window,nodejs中表示object

4.以下擷取屬性的兩種方式

obj.x //寫死代碼裡

obj["x"] //可以動态調用屬性,[]内是字元串
           

5.xhr相關

var xhr = new XMLHttpRequest(); //建立xhr對象
xhr.open("GET", url, true);  //請求資料 用GET方法 異步擷取
xhr.onreadystatechange = function() {  //一個事件可以擷取請求之後的東西
     
    if (xhr.readyState == 4 && xhr.status == 200) {
        console.log(xhr.responseText); 
    }
};
           

6. 在js中使用Function可以執行個體化函數對象,也就是說在js中函數和普通對象一樣。

函數是Function的執行個體

文法:


new Function(arg1, arg2........argN, body);

1,Function中的參數全部是字元串。

2,構造函數的作用是将參數連接配接起來構成函數。

       * 如果參數隻有一個即是表示函數體。

       * 如果參數多個,最後一個為函數體,前面的全是表示函數參數。

       * 如果沒有參數,即建立空函數。

           

以下兩種建立函數示例的方法是一樣的

function foo(num) {


   console.log(num)
}

等價于
var func = new Function("num","console.log(num);"); //參數都是字元串,最後一個參數是函數體的内容。
           

分别通過以下方式調用

foo(5)
func(5)
           

7.使用require子產品化,define使用

define(['myLib'], function(myLib) {
    function foo() {
        myLib.somefunction()
    }
    return {
        foo: foo
    };
});
           

8.use strict 指令

嚴格模式中 所有的變量都要聲明(在非嚴格模式中,給未聲明的變量指派,是給全局對象window對象添加一個屬性)

嚴格模式中 函數(不是方法)中的this值為undefined,非嚴格模式指代全局對着(window)

9.&&可以當if使用

var a;
1==1 && a=2
 
           

表示如果前面條件1==1為true,則a=2。

10.btoa是window下的方法,相當于base64

11.參數加密規則

對于不知道的加密字元串,首先為HEX,然後按照下面表嘗試

ggzip 1f .8b. 08
lzma 6c.00
zlib 78.51
           

12. 參數擷取途徑

1.直接HTML源碼

2.寫死在JS

3.來自cookie

4.響應中擷取

13. 無限debugger

(function(){}).constructor ===Function
           
Function.prototype.constructor=function(){};