From 3e501cd0c13943ecdeba343a75ced109c6aa1b80 Mon Sep 17 00:00:00 2001 From: hackademix Date: Fri, 29 Jan 2021 23:07:28 +0100 Subject: [PATCH] Prevent detection of wrapped functions (e.g. in WebGL interception) on Chromium. --- src/nscl/content/patchWindow.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/nscl/content/patchWindow.js b/src/nscl/content/patchWindow.js index bc99181..0083227 100644 --- a/src/nscl/content/patchWindow.js +++ b/src/nscl/content/patchWindow.js @@ -6,11 +6,12 @@ function patchWindow(patchingCallback, env = {}) { // Chromium let exportFunction = (func, targetObject, {defineAs}) => { let original = targetObject[defineAs]; - if (original && original.toString) { - func.toString = original.toString.bind(original); - } console.log(`Setting ${targetObject}.${defineAs}`, func); - targetObject[defineAs] = func; + targetObject[defineAs] = new Proxy(original, { + apply(target, thisArg, args) { + return func.apply(thisArg, args); + } + }); }; let cloneInto = (obj, targetObject) => { return obj; // dummy for assignment