diff --git a/microShield-ios-blocker.user.js b/microShield-ios-blocker.user.js index e7b6db4..2809f9f 100644 --- a/microShield-ios-blocker.user.js +++ b/microShield-ios-blocker.user.js @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield-ios-blocker.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* @@ -210,4 +210,4 @@ "use strict";(()=>{var urlSafeCharacters=[..."abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~"],numericCharacters=[..."0123456789"],distinguishableCharacters=[..."CDEHKMPRTUWXY012458"],asciiPrintableCharacters=[..."!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"],alphanumericCharacters=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"],readUInt16LE=(uInt8Array,offset)=>uInt8Array[offset]+(uInt8Array[offset+1]<<8),generateForCustomCharacters=(length,characters,randomBytes)=>{let characterCount=characters.length,maxValidSelector=Math.floor(65536/characterCount)*characterCount-1,entropyLength=2*Math.ceil(1.1*length),string="",stringLength=0;for(;stringLengthmaxValidSelector)&&(string+=characters[entropyValue%characterCount],stringLength++)}}return string},generateForCustomCharactersAsync=async(length,characters,randomBytesAsync)=>{let characterCount=characters.length,maxValidSelector=Math.floor(65536/characterCount)*characterCount-1,entropyLength=2*Math.ceil(1.1*length),string="",stringLength=0;for(;stringLengthmaxValidSelector)&&(string+=characters[entropyValue%characterCount],stringLength++)}}return string},allowedTypes=new Set([void 0,"hex","base64","url-safe","numeric","distinguishable","ascii-printable","alphanumeric"]),createGenerator=(generateForCustomCharacters2,specialRandomBytes2,randomBytes)=>({length,type,characters})=>{if(!(length>=0&&Number.isFinite(length)))throw new TypeError("Expected a `length` to be a non-negative finite number");if(type!==void 0&&characters!==void 0)throw new TypeError("Expected either `type` or `characters`");if(characters!==void 0&&typeof characters!="string")throw new TypeError("Expected `characters` to be string");if(!allowedTypes.has(type))throw new TypeError(`Unknown type: ${type}`);if(type===void 0&&characters===void 0&&(type="hex"),type==="hex"||type===void 0&&characters===void 0)return specialRandomBytes2(Math.ceil(length*.5),"hex",length);if(type==="base64")return specialRandomBytes2(Math.ceil(length*.75),"base64",length);if(type==="url-safe")return generateForCustomCharacters2(length,urlSafeCharacters,randomBytes);if(type==="numeric")return generateForCustomCharacters2(length,numericCharacters,randomBytes);if(type==="distinguishable")return generateForCustomCharacters2(length,distinguishableCharacters,randomBytes);if(type==="ascii-printable")return generateForCustomCharacters2(length,asciiPrintableCharacters,randomBytes);if(type==="alphanumeric")return generateForCustomCharacters2(length,alphanumericCharacters,randomBytes);if(characters.length===0)throw new TypeError("Expected `characters` string length to be greater than or equal to 1");if(characters.length>65536)throw new TypeError("Expected `characters` string length to be less or equal to 65536");return generateForCustomCharacters2(length,characters,randomBytes)};function createStringGenerator(specialRandomBytes2,randomBytes){return createGenerator(generateForCustomCharacters,specialRandomBytes2,randomBytes)}function createAsyncStringGenerator(specialRandomBytesAsync,randomBytesAsync){return createGenerator(generateForCustomCharactersAsync,specialRandomBytesAsync,randomBytesAsync)}var toHex=uInt8Array=>[...uInt8Array].map(byte=>byte.toString(16).padStart(2,"0")).join(""),toBase64=uInt8Array=>btoa(String.fromCodePoint(...uInt8Array)),maxEntropy=65536;function getRandomValues(byteLength){let generatedBytes=new Uint8Array(byteLength);for(let totalGeneratedBytes=0;totalGeneratedBytes{let E=new Error;if(!E.stack)throw new Error("Stack trace is not available!");return E.stack},ParseCallStack=(Stack=GenerateCallStack())=>{if(Stack.includes("@")){let Raw2=Stack.split(` `).slice(2),Trace2=[];navigator.userAgent.includes("Firefox/")&&Raw2.splice(-1,1);for(let Line of Raw2){let Start=Line.indexOf("@")+1,LastColon=Line.lastIndexOf(":"),Dump=LastColon<0?Line.slice(Start):Line.slice(Start,Line.lastIndexOf(":",LastColon-1));Trace2.push(Dump)}return Trace2}let Raw=Stack.slice(6).split(` `).slice(2),Trace=[];for(let Line of Raw){let Dump=Line.slice(Line.indexOf("(")+1||Line.indexOf("at")+3,Line.lastIndexOf(":",Line.lastIndexOf(":")-1));Trace.push(Dump)}return Trace},JustifyCallStack=(Stack=ParseCallStack())=>{let SkipLines=0;for(let Line of Stack){let Index=Line.indexOf("://");if(Index===5||Index===4)break;SkipLines++}return Stack.slice(SkipLines)};var HasSubstringSetsInString=(Text,Substrings)=>{for(let Substring of Substrings)if(Text.includes(Substring))return!0;return!1};var AdshieldHostableDomains=["07c225f3.online","css-load.com","html-load.com","content-loader.com","html-load.cc"],AdshieldDomains=[...AdshieldHostableDomains,"22d2d4d9-0c15-4a3a-9562-384f2c100146.xyz","f97ae142.online","error-report.com","2aeabdd4-3280-4f03-bc92-1890494f28be.xyz","e1577bbd-2a7e-4bee-b2fe-12a6406689e5.xyz","fadeb9a7-2417-4a51-8d99-0421a5622cbe.xyz","8bf6c3e9-3f4f-40db-89b3-58248f943ce3.online","b714b1e8-4b7d-4ce9-a248-48fd5472aa0b.online","657475b7-0095-478d-90d4-96ce440604f9.online","4e55.xyz","4e68.xyz","b211.xyz","4a0e.xyz","safe-load.xyz","da29e6b8-f018-490f-b25f-39a887fc95e7.xyz","81ac.xyz","e076.xyz","b59c.xyz","48a16802.site","7e809ed7-e553-4e29-acb1-4e3c0e986562.site","d84bc26d.site","b1181fb1.site","f6176563.site","7fc8.site","295c.site","3a2e.site","58e0.site","bbd8.site","ca3d.site","ec44.site","f090.site","02777e.site","05751c.site","8acc5c.site","b9f25b.site","4aae8f.site","07e197.site","f2f8.xyz","a67d12.xyz","ca9246.xyz","a49ebd.xyz","485728.xyz","caa2c4.xyz","d980ed.xyz","4e04f7.xyz","68646f.xyz","1350c3.xyz","20519a.xyz","634369.xyz","d8b0a5.xyz","5fd6bc.xyz","1116c5.xyz","1a1fb6.xyz","7608d5.xyz","977878.xyz","bc98ad.xyz","11c7a3.xyz","5ceea3.xyz","97b448.xyz","dd2270.xyz","605efe.xyz","fbfec2.xyz","b0eb63.xyz","ce357c.xyz","b903c2.xyz","22dd31.xyz","cfb98a.xyz","072551.xyz","5550be.xyz","f8a070.xyz","4e990.xyz","6a6672.xyz","0395d1.xyz","156fd4.xyz","b82978.xyz"],AdshieldKeywords=[...AdshieldDomains,"failed to load website","blocking software"],AdshieldDomainsize=AdshieldHostableDomains.length;var IsAdShieldCall=(Trace=JustifyCallStack())=>Trace.length===0?!1:!!HasSubstringSetsInString(Trace[Trace.length-1],AdshieldDomains);var DocumentReady=async(Doc=document)=>{if(Doc.readyState==="loading")return new Promise(Resolve=>{Doc.addEventListener("readystatechange",()=>{Resolve()})})};var CreateDebug=Namespace=>{let Header=`[microShield:${Namespace}]`;return new Proxy(console.debug,{apply(Target,ThisArg,ArgArray){Reflect.apply(Target,ThisArg,[Header,...ArgArray])}})};var Config={Debug:!1};var Win=typeof unsafeWindow<"u"?unsafeWindow:window,Debug=CreateDebug("secret"),Secret=browser_default({length:20}),PprintCall=(Name,WasBlocked,V)=>{Debug(WasBlocked?"-":"+","name="+Name,"v=",V,"stack=",GenerateCallStack())},ProtectFunction=(F,Options)=>new Proxy(F,{apply(Target,ThisArg,ArgArray){let E=()=>{throw PprintCall(Options.Name,!0,ArgArray),new Error};if(IsAdShieldCall()&&E(),Options.CheckArguments){for(let Arg of ArgArray.filter(Arg2=>typeof Arg2=="string"))HasSubstringSetsInString(Arg,AdshieldKeywords)&&E();for(let Arg of ArgArray.filter(Arg2=>typeof Arg2=="function"))HasSubstringSetsInString(Arg.toString(),AdshieldKeywords)&&E();for(let Arg of ArgArray.filter(Arg2=>Arg2 instanceof URL))HasSubstringSetsInString(Arg.href,AdshieldKeywords)&&E()}if(Options.CheckErrorStack&&HasSubstringSetsInString(location.hostname,Options.CheckErrorStack))for(let Arg of ArgArray.filter(Arg2=>Arg2 instanceof Error))HasSubstringSetsInString(Arg.stack??"",[...AdshieldKeywords,"microShield",`@[native code] -E@${location.protocol}//${location.hostname+location.pathname}:`])&&E();if(Options.CheckArgumentFunctions)for(let CheckFunction of Options.CheckArgumentFunctions)CheckFunction(ArgArray)||E();if(Options.CheckOutputs){let Output=Reflect.apply(Target,ThisArg,ArgArray);HasSubstringSetsInString(Output.toLowerCase(),AdshieldKeywords)&&E()}return Config.Debug&&PprintCall(Options.Name,!1,ArgArray),Reflect.apply(Target,ThisArg,ArgArray)},setPrototypeOf(Target,V){throw PprintCall(Options.Name,!0,V),new Error}});var ProtectedDescriptors=new Set,ProtectDescriptors=(O,Key,NewProperty)=>{if(ProtectedDescriptors.size===0){let DefineProperty=ProtectFunction(Object.defineProperty,{CheckArgumentFunctions:[]}),DefineProperties=ProtectFunction(Object.defineProperties,{CheckArgumentFunctions:[ArgArray=>{for(let TargetProperty of Object.keys(ArgArray[1]))if(ProtectedDescriptors.has(ArgArray[0][TargetProperty]))return!1;return!0}]});ProtectedDescriptors.add(DefineProperty),ProtectedDescriptors.add(DefineProperties),Object.defineProperty(Win.Object,"defineProperty",{value:DefineProperty}),Object.defineProperties(Win.Object,{defineProperty:{value:DefineProperty},defineProperties:{value:DefineProperties}})}Object.defineProperty(O,Key,{value:NewProperty}),ProtectedDescriptors.add(NewProperty)},ProtectFunctionDescriptors=(O,Key,Options)=>{let Property=O[Key];Options===void 0&&(Options={}),Options.Name===void 0&&(Options.Name=Property.name),ProtectDescriptors(O,Key,ProtectFunction(Property,Options))};var ProtectedPrefix="asdf-",ProtectStorageApis=()=>{ProtectFunctionDescriptors(window.Storage.prototype,"setItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[2]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"removeItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[1]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"clear")};var Hook=()=>{let Win2=typeof unsafeWindow<"u"?unsafeWindow:window;ProtectFunctionDescriptors(Win2,"Error"),ProtectFunctionDescriptors(Win2.EventTarget.prototype,"addEventListener"),ProtectFunctionDescriptors(Win2.MessagePort.prototype,"postMessage"),ProtectFunctionDescriptors(Win2.Element.prototype,"remove"),ProtectFunctionDescriptors(Win2.Element.prototype,"removeChild"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentElement"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentHTML"),ProtectFunctionDescriptors(Win2,"setInterval"),ProtectFunctionDescriptors(Win2,"setTimeout",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttribute",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttributeNS",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.document,"createElement"),ProtectFunctionDescriptors(Win2.document,"createElementNS"),ProtectFunctionDescriptors(Win2,"alert",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"confirm",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"atob",{CheckOutputs:!0}),ProtectFunctionDescriptors(Win2,"decodeURI"),ProtectFunctionDescriptors(Win2,"decodeURIComponent"),ProtectFunctionDescriptors(Win2.console,"log",{CheckErrorStack:["jjang0u.com"]}),ProtectStorageApis(),ProtectFunctionDescriptors(Win2,"fetch",{CheckArguments:!0})},Observe=()=>{let Debug2=CreateDebug("observe");new MutationObserver(Mutations=>{for(let Mutation of Mutations)for(let AddedNode of Mutation.addedNodes){let Matched=AddedNode instanceof HTMLElement&&HasSubstringSetsInString(AddedNode.innerHTML,AdshieldKeywords);(Matched&&location.hostname!=="text-compare.com"||Matched&&location.hostname==="text-compare.com"&&AddedNode.className!=="text-compare")&&(AddedNode.remove(),Debug2(AddedNode))}}).observe(document.body,{subtree:!0,childList:!0})},Bootstrap=()=>{Hook(),DocumentReady().then(()=>{Observe()})};Bootstrap();})(); +E@${location.protocol}//${location.hostname+location.pathname}:`])&&E();if(Options.CheckArgumentFunctions)for(let CheckFunction of Options.CheckArgumentFunctions)CheckFunction(ArgArray)||E();if(Options.CheckOutputs){let Output=Reflect.apply(Target,ThisArg,ArgArray);HasSubstringSetsInString(Output.toLowerCase(),AdshieldKeywords)&&E()}return Config.Debug&&PprintCall(Options.Name,!1,ArgArray),Reflect.apply(Target,ThisArg,ArgArray)},setPrototypeOf(Target,V){throw PprintCall(Options.Name,!0,V),new Error}});var ProtectedDescriptors=new Set,ProtectDescriptors=(O,Key,NewProperty)=>{if(ProtectedDescriptors.size===0){let DefineProperty=ProtectFunction(Object.defineProperty,{CheckArgumentFunctions:[]}),DefineProperties=ProtectFunction(Object.defineProperties,{CheckArgumentFunctions:[ArgArray=>{if(location.hostname.includes("raenonx.cc"))return!0;for(let TargetProperty of Object.keys(ArgArray[1]))if(ProtectedDescriptors.has(ArgArray[0][TargetProperty]))return!1;return!0}]});ProtectedDescriptors.add(DefineProperty),ProtectedDescriptors.add(DefineProperties),Object.defineProperty(Win.Object,"defineProperty",{value:DefineProperty}),Object.defineProperties(Win.Object,{defineProperty:{value:DefineProperty},defineProperties:{value:DefineProperties}})}Object.defineProperty(O,Key,{value:NewProperty}),ProtectedDescriptors.add(NewProperty)},ProtectFunctionDescriptors=(O,Key,Options)=>{let Property=O[Key];Options===void 0&&(Options={}),Options.Name===void 0&&(Options.Name=Property.name),ProtectDescriptors(O,Key,ProtectFunction(Property,Options))};var ProtectedPrefix="asdf-",ProtectStorageApis=()=>{ProtectFunctionDescriptors(window.Storage.prototype,"setItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[2]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"removeItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[1]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"clear")};var Hook=()=>{let Win2=typeof unsafeWindow<"u"?unsafeWindow:window;ProtectFunctionDescriptors(Win2,"Error"),ProtectFunctionDescriptors(Win2.EventTarget.prototype,"addEventListener"),ProtectFunctionDescriptors(Win2.MessagePort.prototype,"postMessage"),ProtectFunctionDescriptors(Win2.Element.prototype,"remove"),ProtectFunctionDescriptors(Win2.Element.prototype,"removeChild"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentElement"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentHTML"),ProtectFunctionDescriptors(Win2,"setInterval"),ProtectFunctionDescriptors(Win2,"setTimeout",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttribute",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttributeNS",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.document,"createElement"),ProtectFunctionDescriptors(Win2.document,"createElementNS"),ProtectFunctionDescriptors(Win2,"alert",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"confirm",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"atob",{CheckOutputs:!0}),ProtectFunctionDescriptors(Win2,"decodeURI"),ProtectFunctionDescriptors(Win2,"decodeURIComponent"),ProtectFunctionDescriptors(Win2.console,"log",{CheckErrorStack:["jjang0u.com"]}),ProtectStorageApis(),ProtectFunctionDescriptors(Win2,"fetch",{CheckArguments:!0})},Observe=()=>{let Debug2=CreateDebug("observe");new MutationObserver(Mutations=>{for(let Mutation of Mutations)for(let AddedNode of Mutation.addedNodes){let Matched=AddedNode instanceof HTMLElement&&HasSubstringSetsInString(AddedNode.innerHTML,AdshieldKeywords);(Matched&&location.hostname!=="text-compare.com"||Matched&&location.hostname==="text-compare.com"&&AddedNode.className!=="text-compare")&&(AddedNode.remove(),Debug2(AddedNode))}}).observe(document.body,{subtree:!0,childList:!0})},Bootstrap=()=>{Hook(),DocumentReady().then(()=>{Observe()})};Bootstrap();})(); diff --git a/microShield-ios-recovery.user.js b/microShield-ios-recovery.user.js index 05ffb6a..41a599b 100644 --- a/microShield-ios-recovery.user.js +++ b/microShield-ios-recovery.user.js @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield-ios-recovery.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* diff --git a/microShield.user.js b/microShield.user.js index a1ead25..38f39bc 100644 --- a/microShield.user.js +++ b/microShield.user.js @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* @@ -31136,7 +31136,7 @@ QG1"CuJ'oV(I)>lbW4D#e L6`,output:"wr275yogsj4kv03izcnx1uaqb8pflm6th",reserved1:5 `,reserved1Output:"mteqh0ys62p1fxj589ro4aunzlig3c7wbk",reserved2:56,reserved2Input:"{eF%OXrQ2>np3JN]47u",reserved2Output:"9jmanwyqx0s54zuto6h"},{id:"nloc",input:"x<[ykY%1-sK9_C0Raj#8OLl]/HwhqFU 3",output:"0ozupkrx6qjwnygl34m7i9th1f8v2bec5",reserved1:97,reserved1Input:'&m2GT5IrP" .B(o=:igbJpWnz7tcvNZ`>\n',reserved1Output:"74hfvbtcj2eroa0ul56yw3inqxkgp9m1zs",reserved2:115,reserved2Input:"uV6})Q'?D{SeAMX4;Ef",reserved2Output:"91ysxe8luorn6vpciwq"},{id:"fkad",input:"7z>g}{/W#`c[ZT&sI<2-haKXYn\no)xSFA",output:"niue8tmyacj3l91q65fxbwzrv7po2gk40",reserved1:115,reserved1Input:"1EHb.|u?p(qfPity'r6O% w=]9BJRD;:8k",reserved1Output:"phm21v9cw4b73yglnfxotazsuj8qrk650i",reserved2:104,reserved2Input:'Qj^ NCUv54le"VMm_30GL',reserved2Output:"bixqrhwn9zjm54o12fe0s"},{id:"svmm",input:`maG;FT.e2cYzV:%i})g4bp-KUZy#[h{X19o&SEAM/n"O= 05P',reserved1Output:"36qz0mv9tne7kwra5i1ujx28oyfspcglh4",reserved2:101,reserved2Input:"|` 'Rqj6CNWH]I8sx7u3f",reserved2Output:"wegyjpzux38q2a9vmifot"},{id:"cokq",input:`(r%96jVK7{kP gDhOcFs'1;M"IuQZ/yqA`,output:"izxsomqh3p8bvga49w7fy2tluc6e5n01r",reserved1:106,reserved1Input:"^zG[wm\nC`=8Bv><&]0:T L#px3Xli-n).4",reserved1Output:"p91tzx4ibshwf3qyen506ugo2mkv8lrjc7",reserved2:107,reserved2Input:"EYf?RN2a}WbU5eH_|StJo",reserved2Output:"sm8fkhrwa94y0eupj2nq1"},{id:"znbg",input:"( EHC_;s/.WgNfVl z9MYhQ}Tj:JFUS)#",output:"o5hkm78up2yxwvzsj0at1bglr6ei43ncq",reserved1:102,reserved1Input:`KZi{^4POo37nv?x&1`]2t",reserved2Output:"crxmjf7yhgt6o3p8l09iv"}];init_esbuild_inject();init_esbuild_inject();init_esbuild_inject();var Config={Debug:!1};init_esbuild_inject();var CreateDebug=Namespace=>{let Header=`[microShield:${Namespace}]`;return new Proxy(console.debug,{apply(Target,ThisArg,ArgArray){Reflect.apply(Target,ThisArg,[Header,...ArgArray])}})};var Win=typeof unsafeWindow<"u"?unsafeWindow:window,Debug=CreateDebug("secret"),Secret=browser_default({length:20}),PprintCall=(Name,WasBlocked,V)=>{Debug(WasBlocked?"-":"+","name="+Name,"v=",V,"stack=",GenerateCallStack())},ProtectFunction=(F,Options)=>new Proxy(F,{apply(Target,ThisArg,ArgArray){let E=()=>{throw PprintCall(Options.Name,!0,ArgArray),new Error};if(IsAdShieldCall()&&E(),Options.CheckArguments){for(let Arg of ArgArray.filter(Arg2=>typeof Arg2=="string"))HasSubstringSetsInString(Arg,AdshieldKeywords)&&E();for(let Arg of ArgArray.filter(Arg2=>typeof Arg2=="function"))HasSubstringSetsInString(Arg.toString(),AdshieldKeywords)&&E();for(let Arg of ArgArray.filter(Arg2=>Arg2 instanceof URL))HasSubstringSetsInString(Arg.href,AdshieldKeywords)&&E()}if(Options.CheckErrorStack&&HasSubstringSetsInString(location.hostname,Options.CheckErrorStack))for(let Arg of ArgArray.filter(Arg2=>Arg2 instanceof Error))HasSubstringSetsInString(Arg.stack??"",[...AdshieldKeywords,"microShield",`@[native code] -E@${location.protocol}//${location.hostname+location.pathname}:`])&&E();if(Options.CheckArgumentFunctions)for(let CheckFunction of Options.CheckArgumentFunctions)CheckFunction(ArgArray)||E();if(Options.CheckOutputs){let Output=Reflect.apply(Target,ThisArg,ArgArray);HasSubstringSetsInString(Output.toLowerCase(),AdshieldKeywords)&&E()}return Config.Debug&&PprintCall(Options.Name,!1,ArgArray),Reflect.apply(Target,ThisArg,ArgArray)},setPrototypeOf(Target,V){throw PprintCall(Options.Name,!0,V),new Error}}),UnprotectedFetch=fetch,ProtectedDescriptors=new Set,ProtectDescriptors=(O,Key,NewProperty)=>{if(ProtectedDescriptors.size===0){let DefineProperty=ProtectFunction(Object.defineProperty,{CheckArgumentFunctions:[]}),DefineProperties=ProtectFunction(Object.defineProperties,{CheckArgumentFunctions:[ArgArray=>{for(let TargetProperty of Object.keys(ArgArray[1]))if(ProtectedDescriptors.has(ArgArray[0][TargetProperty]))return!1;return!0}]});ProtectedDescriptors.add(DefineProperty),ProtectedDescriptors.add(DefineProperties),Object.defineProperty(Win.Object,"defineProperty",{value:DefineProperty}),Object.defineProperties(Win.Object,{defineProperty:{value:DefineProperty},defineProperties:{value:DefineProperties}})}Object.defineProperty(O,Key,{value:NewProperty}),ProtectedDescriptors.add(NewProperty)},ProtectFunctionDescriptors=(O,Key,Options)=>{let Property=O[Key];Options===void 0&&(Options={}),Options.Name===void 0&&(Options.Name=Property.name),ProtectDescriptors(O,Key,ProtectFunction(Property,Options))};init_esbuild_inject();var TsMorph=__toESM(require_ts_morph(),1),Extractor=class{Code="";constructor(Code){this.Code=Code}GetToken(){let FileInstance=new TsMorph.Project({compilerOptions:{allowJs:!0,skipLibCheck:!0,target:TsMorph.ScriptTarget.ES2020},skipFileDependencyResolution:!0,useInMemoryFileSystem:!0}).createSourceFile("code.js",this.Code,{overwrite:!0}),Tokens=[];return FileInstance.forEachDescendant(CbNode=>{if(CbNode.getKind()===TsMorph.SyntaxKind.VariableDeclaration){let VariableDeclaration=CbNode.asKind(TsMorph.SyntaxKind.VariableDeclaration),Initalizer=VariableDeclaration.getInitializer();if(Initalizer&&Initalizer.getKind()===TsMorph.SyntaxKind.StringLiteral){let Value=Initalizer.getText().slice(1,-1);/^eyJ[A-Za-z0-9._-]+$/.test(Value)&&VariableDeclaration.findReferencesAsNodes().forEach(Reference=>{let TokenVars=[];Reference.getParent().getChildren().forEach(Child=>{TokenVars.push(...Child.getChildrenOfKind(TsMorph.SyntaxKind.Identifier))}),TokenVars.forEach(TokenVar=>{TokenVar.getDefinitions()[0].getDeclarationNode().forEachChild(Child=>{Child.getKind()===TsMorph.SyntaxKind.StringLiteral&&Tokens.push(Child.getText().slice(1,-1))})})})}}}),Tokens.join("")}},AdvancedExtractor=class extends Extractor{constructor(Code){super(Code)}GetToken(){let FileInstance=new TsMorph.Project({compilerOptions:{allowJs:!0,skipLibCheck:!0,target:TsMorph.ScriptTarget.ES2020},skipFileDependencyResolution:!0,useInMemoryFileSystem:!0}).createSourceFile("code.js",this.Code,{overwrite:!0}),Tokens=[],EncoderNodes=FileInstance.getDescendantsOfKind(TsMorph.SyntaxKind.FunctionDeclaration).filter(Descendant=>Descendant.getParent().getChildrenOfKind(TsMorph.SyntaxKind.ExpressionStatement).length>0).filter(EncoderNode2=>EncoderNode2.getKind()===TsMorph.SyntaxKind.FunctionDeclaration).filter(EncoderNode2=>EncoderNode2.getParent().getChildrenOfKind(TsMorph.SyntaxKind.ExpressionStatement)[0].getChildrenOfKind(TsMorph.SyntaxKind.BinaryExpression).length>0).filter(EncoderNode2=>EncoderNode2.getFullText().includes("=="));EncoderNodes=EncoderNodes[0].getParent().getChildrenOfKind(TsMorph.SyntaxKind.FunctionDeclaration);let DecoderNode=EncoderNodes.filter(EncoderNode2=>!EncoderNode2.getText().includes("=="))[0],EncoderNode=EncoderNodes.filter(EncoderNode2=>EncoderNode2.getText().includes("=="))[0],MinusNumber=Number(DecoderNode.getFirstDescendantByKind(TsMorph.SyntaxKind.MinusEqualsToken).getParent().getFirstDescendantByKind(TsMorph.SyntaxKind.NumericLiteral).getText()),EncoderStringArray=[];EncoderNode.getFirstDescendantByKind(TsMorph.SyntaxKind.ArrayLiteralExpression).getDescendantsOfKind(TsMorph.SyntaxKind.StringLiteral).forEach(Child=>{EncoderStringArray.push(Child.getText().slice(1,-1))});let ReorderConditionNode=FileInstance.getDescendantsOfKind(TsMorph.SyntaxKind.IfStatement).filter(IfStatement=>IfStatement.getText().match(/parseInt\(/g)?.length>8&&IfStatement.getText().includes("break"))[0].getFirstDescendantByKind(TsMorph.SyntaxKind.BinaryExpression),ReorderConditionVar=ReorderConditionNode.getDescendantsOfKind(TsMorph.SyntaxKind.Identifier).filter(Identifier=>Identifier.getParent().getDescendantsOfKind(TsMorph.SyntaxKind.NumericLiteral).length===1&&Identifier.getText()!=="parseInt")[0].getText();for(;!new Function("EncoderStringArray","MinusNumber",`const ${ReorderConditionVar} = (I) => { return EncoderStringArray[I - MinusNumber] } +E@${location.protocol}//${location.hostname+location.pathname}:`])&&E();if(Options.CheckArgumentFunctions)for(let CheckFunction of Options.CheckArgumentFunctions)CheckFunction(ArgArray)||E();if(Options.CheckOutputs){let Output=Reflect.apply(Target,ThisArg,ArgArray);HasSubstringSetsInString(Output.toLowerCase(),AdshieldKeywords)&&E()}return Config.Debug&&PprintCall(Options.Name,!1,ArgArray),Reflect.apply(Target,ThisArg,ArgArray)},setPrototypeOf(Target,V){throw PprintCall(Options.Name,!0,V),new Error}}),UnprotectedFetch=fetch,ProtectedDescriptors=new Set,ProtectDescriptors=(O,Key,NewProperty)=>{if(ProtectedDescriptors.size===0){let DefineProperty=ProtectFunction(Object.defineProperty,{CheckArgumentFunctions:[]}),DefineProperties=ProtectFunction(Object.defineProperties,{CheckArgumentFunctions:[ArgArray=>{if(location.hostname.includes("raenonx.cc"))return!0;for(let TargetProperty of Object.keys(ArgArray[1]))if(ProtectedDescriptors.has(ArgArray[0][TargetProperty]))return!1;return!0}]});ProtectedDescriptors.add(DefineProperty),ProtectedDescriptors.add(DefineProperties),Object.defineProperty(Win.Object,"defineProperty",{value:DefineProperty}),Object.defineProperties(Win.Object,{defineProperty:{value:DefineProperty},defineProperties:{value:DefineProperties}})}Object.defineProperty(O,Key,{value:NewProperty}),ProtectedDescriptors.add(NewProperty)},ProtectFunctionDescriptors=(O,Key,Options)=>{let Property=O[Key];Options===void 0&&(Options={}),Options.Name===void 0&&(Options.Name=Property.name),ProtectDescriptors(O,Key,ProtectFunction(Property,Options))};init_esbuild_inject();var TsMorph=__toESM(require_ts_morph(),1),Extractor=class{Code="";constructor(Code){this.Code=Code}GetToken(){let FileInstance=new TsMorph.Project({compilerOptions:{allowJs:!0,skipLibCheck:!0,target:TsMorph.ScriptTarget.ES2020},skipFileDependencyResolution:!0,useInMemoryFileSystem:!0}).createSourceFile("code.js",this.Code,{overwrite:!0}),Tokens=[];return FileInstance.forEachDescendant(CbNode=>{if(CbNode.getKind()===TsMorph.SyntaxKind.VariableDeclaration){let VariableDeclaration=CbNode.asKind(TsMorph.SyntaxKind.VariableDeclaration),Initalizer=VariableDeclaration.getInitializer();if(Initalizer&&Initalizer.getKind()===TsMorph.SyntaxKind.StringLiteral){let Value=Initalizer.getText().slice(1,-1);/^eyJ[A-Za-z0-9._-]+$/.test(Value)&&VariableDeclaration.findReferencesAsNodes().forEach(Reference=>{let TokenVars=[];Reference.getParent().getChildren().forEach(Child=>{TokenVars.push(...Child.getChildrenOfKind(TsMorph.SyntaxKind.Identifier))}),TokenVars.forEach(TokenVar=>{TokenVar.getDefinitions()[0].getDeclarationNode().forEachChild(Child=>{Child.getKind()===TsMorph.SyntaxKind.StringLiteral&&Tokens.push(Child.getText().slice(1,-1))})})})}}}),Tokens.join("")}},AdvancedExtractor=class extends Extractor{constructor(Code){super(Code)}GetToken(){let FileInstance=new TsMorph.Project({compilerOptions:{allowJs:!0,skipLibCheck:!0,target:TsMorph.ScriptTarget.ES2020},skipFileDependencyResolution:!0,useInMemoryFileSystem:!0}).createSourceFile("code.js",this.Code,{overwrite:!0}),Tokens=[],EncoderNodes=FileInstance.getDescendantsOfKind(TsMorph.SyntaxKind.FunctionDeclaration).filter(Descendant=>Descendant.getParent().getChildrenOfKind(TsMorph.SyntaxKind.ExpressionStatement).length>0).filter(EncoderNode2=>EncoderNode2.getKind()===TsMorph.SyntaxKind.FunctionDeclaration).filter(EncoderNode2=>EncoderNode2.getParent().getChildrenOfKind(TsMorph.SyntaxKind.ExpressionStatement)[0].getChildrenOfKind(TsMorph.SyntaxKind.BinaryExpression).length>0).filter(EncoderNode2=>EncoderNode2.getFullText().includes("=="));EncoderNodes=EncoderNodes[0].getParent().getChildrenOfKind(TsMorph.SyntaxKind.FunctionDeclaration);let DecoderNode=EncoderNodes.filter(EncoderNode2=>!EncoderNode2.getText().includes("=="))[0],EncoderNode=EncoderNodes.filter(EncoderNode2=>EncoderNode2.getText().includes("=="))[0],MinusNumber=Number(DecoderNode.getFirstDescendantByKind(TsMorph.SyntaxKind.MinusEqualsToken).getParent().getFirstDescendantByKind(TsMorph.SyntaxKind.NumericLiteral).getText()),EncoderStringArray=[];EncoderNode.getFirstDescendantByKind(TsMorph.SyntaxKind.ArrayLiteralExpression).getDescendantsOfKind(TsMorph.SyntaxKind.StringLiteral).forEach(Child=>{EncoderStringArray.push(Child.getText().slice(1,-1))});let ReorderConditionNode=FileInstance.getDescendantsOfKind(TsMorph.SyntaxKind.IfStatement).filter(IfStatement=>IfStatement.getText().match(/parseInt\(/g)?.length>8&&IfStatement.getText().includes("break"))[0].getFirstDescendantByKind(TsMorph.SyntaxKind.BinaryExpression),ReorderConditionVar=ReorderConditionNode.getDescendantsOfKind(TsMorph.SyntaxKind.Identifier).filter(Identifier=>Identifier.getParent().getDescendantsOfKind(TsMorph.SyntaxKind.NumericLiteral).length===1&&Identifier.getText()!=="parseInt")[0].getText();for(;!new Function("EncoderStringArray","MinusNumber",`const ${ReorderConditionVar} = (I) => { return EncoderStringArray[I - MinusNumber] } return ${ReorderConditionNode.getText()}`)(EncoderStringArray,MinusNumber);)EncoderStringArray.push(EncoderStringArray.shift());return FileInstance.getDescendantsOfKind(TsMorph.SyntaxKind.Identifier).filter(Identifier=>Identifier.getParent().getDescendantsOfKind(TsMorph.SyntaxKind.Identifier).length===10&&typeof Identifier.getFirstAncestorByKind(TsMorph.SyntaxKind.ReturnStatement)<"u"&&Identifier.getFirstAncestorByKind(TsMorph.SyntaxKind.ReturnStatement).getText().includes(".concat([")).forEach(TokenIdentifier=>{let TokenDeclarationNode=TokenIdentifier.findReferences()[0].getDefinition().getDeclarationNode();if(typeof TokenDeclarationNode.getFirstChildByKind(TsMorph.SyntaxKind.StringLiteral)<"u")Tokens.push(TokenDeclarationNode.getFirstChildByKind(TsMorph.SyntaxKind.StringLiteral).getText().slice(1,-1));else{let CurrentParam=Number(TokenDeclarationNode.getFirstDescendantByKind(TsMorph.SyntaxKind.NumericLiteral).getText());Tokens.push(EncoderStringArray[CurrentParam-MinusNumber])}}),Tokens.join("")}};var GetCachableHtml=async Url=>{let Text=await(await UnprotectedFetch(Url,{cache:"force-cache"})).text();if(Text.length===0)throw new Error("Failed to fetch resource!");return""},GetResourceToken=async ScriptUrl=>{let Text=await(await UnprotectedFetch(ScriptUrl,{cache:"force-cache"})).text(),Match=/eyJ[\w-]*\.eyJ[\w-]*\.[\w-]*/.exec(Text);if(Match===null){let ResponseHash=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-1",new TextEncoder().encode(Text)))).map(Block=>Block.toString(16).padStart(2,"0")).join("");try{return await GetResourceTokenFromCDN(ResponseHash)}catch{if(await GM.getValue(ResponseHash,null)===null){let Token=new AdvancedExtractor(Text).GetToken();return await GM.setValue(ResponseHash,Token),Token}else return await GM.getValue(ResponseHash,null)}}return Match[0]},GetResourceTokenFromCDN=async Hash=>{let CurrentDate=new Date,XHR=await GM.xmlHttpRequest({url:`https://cdn.jsdelivr.net/gh/List-KR/microShield-token@latest/${CurrentDate.getUTCFullYear()}/${CurrentDate.getUTCMonth()}/${CurrentDate.getUTCDate()}/${Hash}.token`});if(XHR.status!==200)throw new Error("Failed to fetch token!");return XHR.response},ResolveResourceUrls=async(Html,Token)=>{let Pattern=/(resources:\/\/[^'"]+)/g,Host=GetRandomAdShieldHost(),NewHtml="",Matches=null;for(;(Matches=Pattern.exec(Html))!==null;){let Url="https://"+Host+"/resources/"+Matches[1].slice(12)+"?token="+Token;NewHtml+=await GetCachableHtml(Url).catch(Errors=>(console.error(Errors),""))}return NewHtml};init_esbuild_inject();init_esbuild_inject();var ProtectedPrefix="asdf-",ProtectStorageApis=()=>{ProtectFunctionDescriptors(window.Storage.prototype,"setItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[2]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"removeItem",{CheckArgumentFunctions:[ArgArray=>!ArgArray[0].startsWith(ProtectedPrefix)||ArgArray[1]===Secret]}),ProtectFunctionDescriptors(window.Storage.prototype,"clear")},Pull=Key=>localStorage.getItem(ProtectedPrefix+Key,Secret),Push=(Key,Value)=>{localStorage.setItem(ProtectedPrefix+Key,Value,Secret)};var Debug2=CreateDebug("entities");var InsertTextEntity=Entity=>{let SelectedNode=document.querySelector(Entity.Selector);if(!SelectedNode)throw new Error("The target node was not found in the frame!");SelectedNode.before(Entity.TextContent),SelectedNode.remove()},IsInstailledInAdGuardCoreLib=new Error().stack?.includes("local.adguard.org"),InsertHeadEntity=Entity=>{IsInstailledInAdGuardCoreLib&&location.hostname.includes("etoday.co.kr")&&document.querySelectorAll(".sticky-body-spacer, .sticky-body-spacer_sub").forEach(Element=>Element.classList.remove("sticky-body-spacer","sticky-body-spacer_sub")),document.head.insertAdjacentHTML("beforeend",Entity.Html)},InsertEntity=async Entity=>{Entity.Type===1?InsertHeadEntity(Entity):Entity.Type===0&&InsertTextEntity(Entity)},InsertEntities=async Entities=>Promise.allSettled(Entities.map(async Entity=>InsertEntity(Entity))),TryCachedEntities=async()=>{let Json=Pull("entity-cache-rev2");if(!Json)throw new Error("The cached entities does not exist on this browser!");let Data=JSON.parse(Json);if(Date.now()-Data.CreatedAt>1e3*60*60*24*30)throw new Error("The cached entities are too old!");if(!Data.Entities.reduce((State,Entity)=>Entity.Type===1?State+Entity.Html.length:State,0))throw new Error("The cached entities has no content!");return Debug2("restoring cached entities data=",Data),await InsertEntities(Data.Entities),!0},PutCachedEntities=Entity=>{Entity.length!==0&&Push("entity-cache-rev2",JSON.stringify({Entity,CreatedAt:Date.now()}))};init_esbuild_inject();var DocumentReady=async(Doc=document)=>{if(Doc.readyState==="loading")return new Promise(Resolve=>{Doc.addEventListener("readystatechange",()=>{Resolve()})})};init_esbuild_inject();var HardcodedEntities=[{domain:"mydaily.co.kr",css:[".header_top > .header_right { width: 180px !important; }"]}],LoadHardcoded=()=>HardcodedEntities.find(Entity=>location.hostname.includes(Entity.domain));var Debug3=CreateDebug("ztinywave"),Decode=Payload=>{let Id=Payload.slice(0,4),Key=source.find(Store=>Store.id===Id);if(!Key)throw new Error("DEFUSER_ZTINYWAVE_KEY_NOT_FOUND");let Ra=String.fromCharCode(Key.reserved1),Rb=String.fromCharCode(Key.reserved2),Unwrap=(Input,Output,Char)=>{let Index=Output.indexOf(Char);return Index>=0?Input[Index]:Char},Mode=0,Data=Payload.slice(4).split("").map(Char=>{if(!Mode){if(Char===Ra)return Mode=1,"";if(Char===Rb)return Mode=2,""}return Mode===1?(Mode=0,Key.reserved1Output.includes(Char)?Unwrap(Key.reserved1Input,Key.reserved1Output,Char):Unwrap(Key.input,Key.output,Char)+Char):Mode===2?(Mode=0,Key.reserved2Output.includes(Char)?Unwrap(Key.reserved2Input,Key.reserved2Output,Char):Unwrap(Key.input,Key.output,Char)+Char):Unwrap(Key.input,Key.output,Char)}).join("");return JSON.parse(Data)},Extract=async()=>{let Sources=[],Pick=()=>{let Targets=document.querySelectorAll('script[data]:not([data=""]),script[wp-data]:not([wp-data=""])');for(let Target of Targets){let Script=Target.getAttribute("src"),Data=Target.getAttribute("data");Script&&Data&&Sources.push({Script,Data})}};if(Pick(),Sources.length===0&&(await DocumentReady(document),Pick()),Sources.length===0)throw new Error("DEFUSER_ZTINYWAVE_TARGET_NOT_FOUND");return Sources},Tinywave=async()=>{if(await TryCachedEntities().catch(Errors=>(Debug3("Failed to initialise cached entities",Errors),!1)))return;let Entities=[],Sources=await Extract(),LoadedHardcoded=LoadHardcoded();if(LoadedHardcoded?.domain)for(let Item of LoadedHardcoded.css)Sources.push({Script:LoadedHardcoded.domain,Data:``});let SourcesResolves=Sources.map(async Source=>{Debug3("source",Source);let Payload=[{tags:Source.Data}];Source.Data.startsWith("{await DocumentReady(document);let AppenDant="";for(let TargetNode of document.querySelectorAll("script[wp-data]")){let Attribute=TargetNode.getAttribute("wp-data");if(!Attribute){Debug4("empty attribute",TargetNode);continue}let Decoded;try{Decoded=new TextDecoder().decode(Uint8Array.from(atob(Attribute),C=>C.charCodeAt(0)))}catch(e){Debug4("failed to decode base64 stream",e);continue}if(!Decoded.startsWith("<")){Debug4("failed to decode encoded text",Decoded);continue}AppenDant+=Decoded}AppenDant&&document.head.insertAdjacentHTML("beforeend",AppenDant)};init_esbuild_inject();async function CheckVersion(){if(await GM.getValue("version",null)===null)await GM.setValue("version",GM.info.script.version);else if(await GM.getValue("version",null)!==GM.info.script.version){for(let Key of await GM.listValues())await GM.deleteValue(Key);await GM.setValue("version",GM.info.script.version)}}var Hook=()=>{let Win2=typeof unsafeWindow<"u"?unsafeWindow:window;ProtectFunctionDescriptors(Win2,"Error"),ProtectFunctionDescriptors(Win2.EventTarget.prototype,"addEventListener"),ProtectFunctionDescriptors(Win2.MessagePort.prototype,"postMessage"),ProtectFunctionDescriptors(Win2.Element.prototype,"remove"),ProtectFunctionDescriptors(Win2.Element.prototype,"removeChild"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentElement"),ProtectFunctionDescriptors(Win2.Element.prototype,"insertAdjacentHTML"),ProtectFunctionDescriptors(Win2,"setInterval"),ProtectFunctionDescriptors(Win2,"setTimeout",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttribute",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.Element.prototype,"setAttributeNS",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2.document,"createElement"),ProtectFunctionDescriptors(Win2.document,"createElementNS"),ProtectFunctionDescriptors(Win2,"alert",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"confirm",{CheckArguments:!0}),ProtectFunctionDescriptors(Win2,"atob",{CheckOutputs:!0}),ProtectFunctionDescriptors(Win2,"decodeURI"),ProtectFunctionDescriptors(Win2,"decodeURIComponent"),ProtectFunctionDescriptors(Win2.console,"log",{CheckErrorStack:["jjang0u.com"]}),ProtectStorageApis(),ProtectFunctionDescriptors(Win2,"fetch",{CheckArguments:!0})},Observe=()=>{let Debug5=CreateDebug("observe");new MutationObserver(Mutations=>{for(let Mutation of Mutations)for(let AddedNode of Mutation.addedNodes){let Matched=AddedNode instanceof HTMLElement&&HasSubstringSetsInString(AddedNode.innerHTML,AdshieldKeywords);(Matched&&location.hostname!=="text-compare.com"||Matched&&location.hostname==="text-compare.com"&&AddedNode.className!=="text-compare")&&(AddedNode.remove(),Debug5(AddedNode))}}).observe(document.body,{subtree:!0,childList:!0})},Bootstrap=()=>{Hook(),Tinywave(),BaseDrop(),DocumentReady().then(()=>{Observe()})};CheckVersion();Bootstrap();})(); /*! Bundled license information: diff --git a/package.json b/package.json index 3eadb5f..a0afaa2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "microshield", - "version": "4.7.3", + "version": "4.7.4", "description": "", "type": "module", "scripts": { diff --git a/sources/banner-ios-blocker.txt b/sources/banner-ios-blocker.txt index d9fd43d..3ebd482 100644 --- a/sources/banner-ios-blocker.txt +++ b/sources/banner-ios-blocker.txt @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield-ios-blocker.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* diff --git a/sources/banner-ios-recovery.txt b/sources/banner-ios-recovery.txt index 58a876a..aafa699 100644 --- a/sources/banner-ios-recovery.txt +++ b/sources/banner-ios-recovery.txt @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield-ios-recovery.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* diff --git a/sources/banner.txt b/sources/banner.txt index 872ceb7..e112c45 100644 --- a/sources/banner.txt +++ b/sources/banner.txt @@ -8,7 +8,7 @@ // @downloadURL https://cdn.jsdelivr.net/gh/List-KR/microShield@latest/microShield.user.js // @license Apache-2.0 // -// @version 4.7.3 +// @version 4.7.4 // @author PiQuark6046 and contributors // // @match *://ygosu.com/* diff --git a/sources/src/utils/secret.ts b/sources/src/utils/secret.ts index 026a39a..1c9f35d 100644 --- a/sources/src/utils/secret.ts +++ b/sources/src/utils/secret.ts @@ -116,6 +116,10 @@ export const ProtectDescriptors = ( const DefineProperties = ProtectFunction(Object.defineProperties, { CheckArgumentFunctions: [ ArgArray => { + if (location.hostname.includes('raenonx.cc')) { + return true + } + for (const TargetProperty of Object.keys(ArgArray[1] as ArbitaryObject) as K[]) { if (ProtectedDescriptors.has(ArgArray[0][TargetProperty])) { return false