js逆向基础必备知识一
1.1基础
三元运算
v1 = 条件?值A:值B; 条件成立v1为值A,条件不成立v1为值B
res = 1 ===1?99:88; 三个等于号表示是否完全相等,==则不然,若1=="1"会报正确
console.log(res); console.log相等于执行,里面放变量相当于print 结果为99
赋值和比较
v1 = 11 ===(n=123) 先把123赋值给n,再判断l1与n是否相等,最后把false赋值给v1
console.log(n); 123
console.log(v1); false
逻辑运算
||表示或,&&表示且
v2 = 9||14 v2值为多少,取决于9||14哪一个决定了为false或true,因为9为true,所以后面为啥都没关系,v2
就等于9
v3 = 0||15 0为false,整体结果取决于后面的值,v3值为15
v4 = 0||15||"杨鑫" 0||15先弄,整体取决于15,相当于15||"杨鑫",v4结果为15
逻辑运算优先级比三元运算高
1.2函数
function sign(v1){
//this
console.log(v1);
} 定义函数,sign为函数名
sign(123); 执行函数,函数内部this=window
sign.call(123,456) 执行结果会把从第二个开始的值赋值进去,结果为456
function sign(v1,v2){
console.log(v1,v2);
}
sign.call(123,456,888)执行结果为456,888,函数内部this=123
若函数需要两个参数值,而只传入一个参数,则后面的值默认undefined
若函数没有定义参数,也可以传入参数值,会在arguments中记录
function x1(){
console.log(arguments);
}
x1(123,234,456,6778);
1.3其他
v1 = {k1:123}
v2 = {k2:99,k3:888}
Object.assign(v1,v2)
console.log(v1); 将v2填充到v1,结果为{k1:123,k2:99,k3:888}
2.js对象
let obj = {
"name":"杨鑫"
}; let 声明变量
console.log(obj.name);
函数定义方法一:
function Person(name,age){
console.log(this);
this.name = name;
this.age = age;
}
let p = new Person("zs",18);
console.log(p.name);
console.log(p.age);访问对象
console.log(p["name"]);访问对象
函数定义方法二:
let add = new Function('a','b','return a+b');
res = add(1,5);
console.log(res);
函数立即执行一:
let res = function add(a,b){
console.log("函数执行了")
return a+b;
}(1,2); 定义和赋值放在一起
console.log(res);
函数立即执行二:
!和~表示函数立即执行
!function addd(a,b){
console.log("函数执行了")
return a+b;
}(1,2);
函数立即执行三:
整体上套一个括号
(function adddd(a,b){
console.log("函数执行了")
return a+b;
}(1,2));
3.字符串编解码
3.1unicode字符串
https://www.bejson.com/convert/unicode_chinese/
'我是猪' unicode为:\u6211\u662f\u732a
3.2bs64编码
btoa("i love you china"); 将字符串转换为bs64编码
atob("aSBsb3ZlIHlvdSBjaGluYQ==");将bs64编码转换为字符串
在浏览器中有这样的方法
再node中用Buffer方法
let buffer = Buffer.from("i love you china");
let base64Str = buffer.toString("base64");
console,log(base64Str);转换为bs64编码
let str = Buffer.from("密文","base64").toString();
console.log(str); 解码
4.常见加密算法
4.1base64编码:
工具:https://www.sojson.com/base64.html
'我是猪' bs64结果:5oiR5piv54yqCiA=
4.2md5算法:
工具:https://www.sojson.com/encrypt_md5.html
'我是猪' md5结果(32位小写):13166076ba99caf9e9e33e0c2ff76464
4.3对称加密算法AES&DES
可逆的,只要知道密钥
工具:https://www.sojson.com/encrypt_aes.html
'我是猪':AES结果:
4.4非对称加密算法RSA
工具: