mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-19 02:39:42 +08:00
补环境2
This commit is contained in:
parent
def2b759ce
commit
2b2d424daf
47
zy-补环境框架/vmProxy_test.js
Normal file
47
zy-补环境框架/vmProxy_test.js
Normal file
@ -0,0 +1,47 @@
|
||||
window = this;
|
||||
|
||||
// 定义名字
|
||||
Object.defineProperties(window, {
|
||||
[Symbol.toStringTag]:{
|
||||
value: "window",
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function vmProxy(o){
|
||||
return new Proxy(window, {
|
||||
set(obj, prop, value) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(obj, prop, value);
|
||||
return Reflect.set(...arguments);
|
||||
},
|
||||
get: function (target, property, receiver) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(target, property, receiver);
|
||||
return target[property];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 创建对象的方法
|
||||
// object.create({});
|
||||
// class window{};
|
||||
// function window(){};new window;
|
||||
|
||||
window = vmProxy(window);
|
||||
|
||||
// navigator = {};
|
||||
// navigator = vmProxy(navigator);
|
||||
//
|
||||
// document = {};
|
||||
// document = vmProxy(document);
|
||||
|
||||
location = {};
|
||||
location.reload = function reload(){
|
||||
|
||||
};
|
||||
|
||||
location = vmProxy(location);
|
||||
console.log(location.reload+'');
|
||||
|
18
zy-补环境框架/window_proxy.js
Normal file
18
zy-补环境框架/window_proxy.js
Normal file
@ -0,0 +1,18 @@
|
||||
window = this;
|
||||
|
||||
// 后代理的检测不到先代理
|
||||
window = new Proxy(window, {
|
||||
set(obj, prop, value) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(obj, prop, value);
|
||||
return Reflect.set(...arguments);
|
||||
},
|
||||
get: function (target, property, receiver) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(target, property, receiver);
|
||||
return target[property];
|
||||
}
|
||||
});
|
||||
|
||||
window.ayf = 123;
|
||||
window.aaa = window.ayf;
|
118
zy-补环境框架/补环境2.md
118
zy-补环境框架/补环境2.md
@ -57,7 +57,123 @@ jsdom 是许多 web 标准的纯 JavaScript 实现,特别是 WHATWG DOM和HTML
|
||||
const descriptor1 = Object.getOwnPropertyDescriptor(navigator, 'userAgent');
|
||||
console.log(descriptor1);
|
||||
|
||||
## 代理是什么
|
||||
## Proxy 代理是什么
|
||||
|
||||
js代码中读了 window.ayf 现在我需要拦截代码
|
||||
|
||||
Proxy 也就是代理,可以帮助我们完成很多事情,例如对数据的处理,对构造函数的处理,对数据的验证,说白了,
|
||||
就是在我们访问对象前添加了一层拦截,可以过滤很多操作,而这些过滤,由你来定义。
|
||||
|
||||
https://www.jianshu.com/p/77eaaf34e732
|
||||
|
||||
官方文档
|
||||
|
||||
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy
|
||||
|
||||
我们监听window对象 set
|
||||
|
||||
window = this;
|
||||
|
||||
window = new Proxy(window, {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
set(obj, prop, value){
|
||||
console.log(obj, prop, value);
|
||||
return Reflect.set(...arguments);
|
||||
}
|
||||
});
|
||||
|
||||
window.ayf = 123;
|
||||
|
||||
打印输出
|
||||
|
||||
{} ayf 123
|
||||
|
||||
我们监听window对象 get
|
||||
|
||||
window = this;
|
||||
|
||||
// 后代理的检测不到先代理
|
||||
window = new Proxy(window, {
|
||||
set(obj, prop, value) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(obj, prop, value);
|
||||
return Reflect.set(...arguments);
|
||||
},
|
||||
get: function (target, property, receiver) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(target, property, receiver);
|
||||
return target[property];
|
||||
}
|
||||
});
|
||||
|
||||
window.ayf = 123;
|
||||
window.aaa = window.ayf;
|
||||
|
||||
打印输出
|
||||
|
||||
{} ayf 123
|
||||
{ ayf: 123 } ayf { ayf: 123 }
|
||||
{ ayf: 123 } aaa 123
|
||||
|
||||
关于检测后代理的检测不到先代理,简单理解事先开启外挂在开启游戏,游戏就检测不到外挂,先开游戏在开启外挂,游戏已经
|
||||
加载了外挂,就会拦截你的外挂
|
||||
|
||||
以此类推设置其他的对象
|
||||
|
||||
window = this;
|
||||
|
||||
// 定义名字
|
||||
Object.defineProperties(window, {
|
||||
[Symbol.toStringTag]:{
|
||||
value: "window",
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function vmProxy(o){
|
||||
return new Proxy(window, {
|
||||
set(obj, prop, value) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(obj, prop, value);
|
||||
return Reflect.set(...arguments);
|
||||
},
|
||||
get: function (target, property, receiver) {
|
||||
// obj 那个对象, prop哪个属性,value设置的值
|
||||
console.log(target, property, receiver);
|
||||
return target[property];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 创建对象的方法
|
||||
// object.create({});
|
||||
// class window{};
|
||||
// function window(){};new window;
|
||||
|
||||
window = vmProxy(window);
|
||||
|
||||
navigator = {};
|
||||
navigator = vmProxy(navigator);
|
||||
|
||||
document = {};
|
||||
document = vmProxy(document);
|
||||
|
||||
location = {};
|
||||
location = vmProxy(location);
|
||||
|
||||
navigator.ayf = 123;
|
||||
navigator.aaa = navigator.ayf;
|
||||
|
||||
打印
|
||||
|
||||
Object [window] {} ayf 123
|
||||
Object [window] {} ayf 123
|
||||
Object [window] { ayf: 123 } Symbol(nodejs.util.inspect.custom) Object [window] { ayf: 123 }
|
||||
Object [window] { ayf: 123 } Symbol(Symbol.toStringTag) Object [window] { ayf: 123 }
|
||||
Object [window] { ayf: 123 } Symbol(Symbol.iterator) Object [window] { ayf: 123 }
|
||||
Object [window] { ayf: 123 } ayf Object [window] { ayf: 123 }
|
||||
Object [window] { ayf: 123 } ayf Object [window] { ayf: 123 }
|
||||
Object [window] { ayf: 123 } aaa 123
|
||||
Object [window] { ayf: 123 } aaa 123
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user