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(){};
回车
可以置空。