mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2024-12-22 12:50:36 +01:00
parent
7bb3f00b45
commit
54c625cd26
@ -167,25 +167,71 @@
|
|||||||
type: "value",
|
type: "value",
|
||||||
changed: alteredToString
|
changed: alteredToString
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const wrappedReflect = wrappedWindow.Reflect;
|
||||||
|
const originalReflectSetPrototypeOf = wrappedReflect.setPrototypeOf;
|
||||||
|
const alteredReflectSetPrototypeOf = scope.exportFunctionWithName(
|
||||||
|
function setPrototypeOf(target, prototype){
|
||||||
|
target = scope.getWrapped(target);
|
||||||
|
if (proxies.has(target)){
|
||||||
|
target = proxies.get(target).wrappedOriginal;
|
||||||
|
}
|
||||||
|
if (proxies.has(prototype)){
|
||||||
|
prototype = proxies.get(prototype).wrappedOriginal;
|
||||||
|
}
|
||||||
|
const grandPrototype = wrappedReflect.getPrototypeOf(prototype);
|
||||||
|
if (proxies.has(grandPrototype)){
|
||||||
|
const testPrototype = wrappedWindow.Object.create(proxies.get(grandPrototype).wrappedOriginal);
|
||||||
|
const value = originalReflectSetPrototypeOf.call(wrappedReflect, target, testPrototype);
|
||||||
|
if (!value){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const value = originalReflectSetPrototypeOf.call(wrappedReflect, target, scope.getWrapped(prototype));
|
||||||
|
return value;
|
||||||
|
}, window, "setPrototypeOf"
|
||||||
|
);
|
||||||
|
scope.changeProperty(window, "toString", {
|
||||||
|
object: wrappedWindow.Reflect,
|
||||||
|
name: "setPrototypeOf",
|
||||||
|
type: "value",
|
||||||
|
changed: alteredReflectSetPrototypeOf
|
||||||
|
});
|
||||||
}
|
}
|
||||||
scope.createProxyFunction = function createProxyFunction(window, original, replacement){
|
scope.createProxyFunction = function createProxyFunction(window, original, replacement){
|
||||||
setupWindowForProxies(window);
|
setupWindowForProxies(window);
|
||||||
const handler = scope.getWrapped(window).Object.create(null);
|
const wrappedObject = scope.getWrapped(window).Object;
|
||||||
handler.apply = scope.exportFunctionWithName(function(target, thisArgs, args){
|
const handler = wrappedObject.create(null);
|
||||||
|
handler.apply = scope.exportFunctionWithName(function(target, thisArg, args){
|
||||||
try {
|
try {
|
||||||
return args.length?
|
return args.length?
|
||||||
replacement.call(thisArgs, ...args):
|
replacement.call(thisArg, ...args):
|
||||||
replacement.call(thisArgs);
|
replacement.call(thisArg);
|
||||||
}
|
}
|
||||||
catch (error){
|
catch (error){
|
||||||
try {
|
try {
|
||||||
return original.apply(thisArgs, args);
|
return original.apply(thisArg, args);
|
||||||
}
|
}
|
||||||
catch (error){
|
catch (error){
|
||||||
return target.apply(thisArgs, args);
|
return target.apply(thisArg, args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, window, "");
|
}, window, "");
|
||||||
|
handler.setPrototypeOf = scope.exportFunctionWithName(function(target, prototype){
|
||||||
|
target = scope.getWrapped(target);
|
||||||
|
if (proxies.has(target)){
|
||||||
|
target = proxies.get(target).wrappedOriginal;
|
||||||
|
}
|
||||||
|
if (proxies.has(prototype)){
|
||||||
|
prototype = proxies.get(prototype).wrappedOriginal;
|
||||||
|
}
|
||||||
|
const grandPrototype = wrappedObject.getPrototypeOf(prototype);
|
||||||
|
if (proxies.has(grandPrototype)){
|
||||||
|
const testPrototype = wrappedObject.create(proxies.get(grandPrototype).wrappedOriginal);
|
||||||
|
wrappedObject.setPrototypeOf(target, testPrototype);
|
||||||
|
}
|
||||||
|
return wrappedObject.setPrototypeOf(target, scope.getWrapped(prototype));
|
||||||
|
}, window, "");
|
||||||
const proxy = new window.Proxy(original, handler);
|
const proxy = new window.Proxy(original, handler);
|
||||||
const proxyData = {
|
const proxyData = {
|
||||||
original: original,
|
original: original,
|
||||||
|
@ -7,6 +7,7 @@ Version 1.10.1:
|
|||||||
|
|
||||||
fixes:
|
fixes:
|
||||||
- lag and functionality loss on google sites
|
- lag and functionality loss on google sites
|
||||||
|
- fix function tampering detection via prototype
|
||||||
- isPointInPath and isPointInStroke return undefined with persistent rng
|
- isPointInPath and isPointInStroke return undefined with persistent rng
|
||||||
|
|
||||||
known issues:
|
known issues:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user