From a2bb42c2db74da61edb42b077bc34da3fe82093e Mon Sep 17 00:00:00 2001 From: wvdumper Date: Fri, 3 Dec 2021 08:54:48 +0100 Subject: [PATCH] Closes #2; Fix TextEncoder error --- Helpers/script.js | 77 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/Helpers/script.js b/Helpers/script.js index 8e6923c..24ff28b 100644 --- a/Helpers/script.js +++ b/Helpers/script.js @@ -1,5 +1,80 @@ const KNOWN_DYNAMIC_FUNC = ['ulns', 'cwkfcplc', 'dnvffnze', 'kgaitijd', 'polorucp']; +function TextEncoder() { +} + +TextEncoder.prototype.encode = function (string) { + var octets = []; + var length = string.length; + var i = 0; + while (i < length) { + var codePoint = string.codePointAt(i); + var c = 0; + var bits = 0; + if (codePoint <= 0x0000007F) { + c = 0; + bits = 0x00; + } else if (codePoint <= 0x000007FF) { + c = 6; + bits = 0xC0; + } else if (codePoint <= 0x0000FFFF) { + c = 12; + bits = 0xE0; + } else if (codePoint <= 0x001FFFFF) { + c = 18; + bits = 0xF0; + } + octets.push(bits | (codePoint >> c)); + c -= 6; + while (c >= 0) { + octets.push(0x80 | ((codePoint >> c) & 0x3F)); + c -= 6; + } + i += codePoint >= 0x10000 ? 2 : 1; + } + return octets; +} + +function TextDecoder() { +} + +TextDecoder.prototype.decode = function (octets) { + var string = ""; + var i = 0; + while (i < octets.length) { + var octet = octets[i]; + var bytesNeeded = 0; + var codePoint = 0; + if (octet <= 0x7F) { + bytesNeeded = 0; + codePoint = octet & 0xFF; + } else if (octet <= 0xDF) { + bytesNeeded = 1; + codePoint = octet & 0x1F; + } else if (octet <= 0xEF) { + bytesNeeded = 2; + codePoint = octet & 0x0F; + } else if (octet <= 0xF4) { + bytesNeeded = 3; + codePoint = octet & 0x07; + } + if (octets.length - i - bytesNeeded > 0) { + var k = 0; + while (k < bytesNeeded) { + octet = octets[i + k + 1]; + codePoint = (codePoint << 6) | (octet & 0x3F); + k += 1; + } + } else { + codePoint = 0xFFFD; + bytesNeeded = octets.length - i; + } + string += String.fromCodePoint(codePoint); + i += bytesNeeded + 1; + } + return string +} + function containsLib(library){ return Process.getModuleByName(library); } @@ -862,4 +937,4 @@ const OEMCrypto_LicenseType = { rpc.exports.inject = inject; -rpc.exports.widevinelibrary = containsLib; \ No newline at end of file +rpc.exports.widevinelibrary = containsLib;