catvm/CatVm2/browser/Window.js
Big1moster d843fcb236 dsf
2023-02-06 11:36:48 +08:00

68 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

window = this;
// debugger;
var Window = function Window() { // 构造函数
// 容易被检测到的 js可以查看堆栈
throw new TypeError("Illegal constructor");
};
catvm.safefunction(Window);
Object.defineProperties(Window.prototype, {
[Symbol.toStringTag]: {
value: "Window",
configurable: true
}
})
Window.prototype.__proto__ = WindowProperties.prototype;
window.__proto__ = Window.prototype;
///////////////////////////// 浏览器代码自动生成部分
Window.prototype.PERSISTENT = 1;
Window.prototype.TEMPORARY = 0;
// v8没有setTimeout浏览器有但是浏览器把这个方法放到this下面伪造v8有这个东西因此我们需要伪造一下
window.setTimeout = function (x, y) {
// x可能是方法也可能是文本
typeof (x) == "function" ? x() : undefined;
typeof (x) == "string" ? eval(x) : undefined;
// 正确应该 生成UUID并且保存到内存
return 123;
};
catvm.safefunction(window.setTimeout);
// 原型下面可以取这个属性\方法,就直接放原型即可
// 只要是方法就需要catvm.safefunction 进行toSting保护
window.open = function open() {
debugger;
};
catvm.safefunction(window.open);
// 赋值空对象最好使用这种class chrome{} 形式,而不是 {},因为这样我们可以看名字,并且最好挂上代理
window.chrome = catvm.proxy(class chrome {
});
// 打个debugger因为我们还不知道js有没有调用该方法也许只是获取了一下看有没有该方法呢
// 等它真正调用的时候,我们再补全其参数及返回
window.DeviceOrientationEvent = function DeviceOrientationEvent() {
debugger;
};
catvm.safefunction(window.DeviceOrientationEvent);
window.DeviceMotionEvent = function DeviceMotionEvent() {
debugger;
};
catvm.safefunction(window.DeviceMotionEvent);
// window.localStorage = class localStorage {
// };
// window.localStorage.getItem = function getItem() {
// debugger;
// };
// catvm.safefunction(window.localStorage.getItem);
// window.localStorage.setItem = function setItem() {
// debugger;
// };
// catvm.safefunction(window.localStorage.setItem);
// window.localStorage = catvm.proxy(window.localStorage)
//////////////////////
// debugger;
window = catvm.proxy(window);
Window = catvm.proxy(Window);