JS逆向
JavaScript逆向基础
文章目录
前言
众所周知,JS 是当前最流行、应用最广泛的客户端脚本语言,在 Web 开发领域有着举足轻重的地位。js逆向主要是逆向js在浏览器中控制页面交互过程。
JavaScript 函数语法
函数就是包裹在花括号中的代码块,前面使用了关键词 function:
function functionname()
{
// 执行代码
}
注: JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。
1.有名函数
代码如下(示例):
function hello(){
console.log('hello')
}
xxs();
2.函数赋值表达式定义函数
代码如下(示例):
hello= function (name){
console.log("hello " + name)
}
hello("LiLei");
3.自执行函数
无需调用该函数, 该函数会自动执行
!(function () {
console.log("Hello World!");
})();
4.内部函数导出
var _in_call;
!(function () {
function in_call(){
console.log('Hello World!')
}
_in_call = in_call;
})();
_in_call();
JavaScript 对象
JavaScript 是一种面向对象的编程语言,在 JavaScript 中几乎所有的东西都是对象。
- 内置对象中有 Object、Function、Array、String、Number、Boolean 等原生对象构造函数
- 在 JavaScript 中,一切皆对象(除 undefined、null 外)
- 所有对象都是基于 Object 来创建,其中的原理是原型继承
我们可以将对象看作是一个属性的无序集合,每个属性都有一个名称和值(键/值对)以 name:value 对呈现。
var car = {name:"BMW", price:100000.0, color:"white"};
dir(car);
dir可以看到 car 是Object对象
1.创建对象
通过new操作符后跟要创建的对象类型的名称来创建
car = new Object();
dir(car);
每个Object类型的实例共有的属性和方法:
- constructor: 保存着用于创建当前对象的函数。
- hasOwnProperty:用于检测给定的属性在当前对象的实例中是否存在。
- isPrototypeOf : 用于检查传入的对象是否是当前对象的原型
- propertyIsEnumerble : 用于检查给定属性能否使用for-in来枚举
- toLocaleString() : 返回对象的字符串表示。
- toString() : 返回对象的字符串表示。
- valueOf() : 返回对象的字符串,数值,或布尔表示。通常和toString() 返回的值相同。
2.对象设置与访问
car.name = "BMW";
car['color'] = "red";
console.log(car['name']);
console.log(car.color)
3.对象方法
var car= {
name:"BMW",
color:"white",
price:100000.0,
salePrice: function()
{
return this.price * 1.5;
}
};
注: 在对象方法中, this
指向调用它所在方法的对象。
4.JSON转换
JSON.parse() // 用于将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify() // 用于将 JavaScript 值转换为 JSON 字符串。
注:经常使用在数据的处理方面,比如后台返回数据。所以后台返回的加密数据,可以使用分析JSON.parse
来找加密位置 体现在请求后
注:JSON.stringify
用在数据加密后,变成字符串传给后台服务器 体现在请求前
// 要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法
var obj = JSON.parse('{"a": "Hello", "b": "World"}')
// 要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'});
事件(event)处理
事件是发生在 HTML 元素上的事情
JS 事件(event)是当用户与网页进行交互时发生的事情,例如单机某个链接或按钮、在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。
一般情况下事件的名称都是以单词on开头的,例如点击事件 onclick、页面加载事件 onload 等
1.事件绑定
事件只有与 HTML 元素绑定之后才能被触发,为 HTML 元素绑定事件处理程序的方法由很多,最简单的就是通过 HTML 事件属性来直接绑定事件处理程序,例如 onclick、onmouseover、onmouseout 等属性。
- 以 onclick 属性为例,通过该属性我们可以为指定的 HTML 元素定义鼠标点击事件(即在该元素上单击鼠标左键时触发的事件),示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript</title>
</head>
<body>
<button type="button" onclick="myBtn()">按钮</button>
<script type="text/javascript">
function myBtn(){
alert("Hello World!");
}
</script>
</body>
</html>
- 除了上述方法外,我们也可以直接使用 JavaScript 中提供的内置函数来为指定元素绑定事件处理程序,如下例所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript</title>
</head>
<body>
<button type="button" id="myBtn">按钮</button>
<script>
function sayHello() {
alert('Hello World!');
}
document.getElementById("myBtn").onclick = sayHello;
</script>
</body>
</html>