That is just talking about the security of your network traffic. Even if somehow you can magically 100% guarantee your traffic is secure. All that does is ensure your anti-cheat stays running. An exploiter can modify the game state and spoof the data your anti-cheat is reading. What does your anti-cheat ultimately do that actual sanity checks and proper security can’t?
how do you know this drags performance there is no visible or even micro performance effects from this system
the client can read client memory levels theres lots of detections that can be opened up just from securing the client so that you have access to allt hat information
You don’t even understand what I said, so I’ll spell it out for you. Exploiters can spoof any value, anything, even to the client itself. They can have it so that when your anti-cheat checks the value of any property, it will be given a fake value. But when anything else checks for that value, it’s given the value they want it to be. They can make it so that any function you call for your detections returns anything they want. It is incredibly trivial; it takes one hookmetamethod.
as an example, we can go over anti-fog. They can check the security level of whatever is accessing a property they have hooked. If it’s Roblox itself, then they get given a fog value of zero; if it’s your anti-cheat, they will give you the value the anti-cheat expects. You can’t secure roblox’s properties and functions because you cannot control their implementation. Your anti-cheat entirely relies on roblox’s properties and functions. your whole game does.
Using memory levels as a detection is incredibly stupid for obvious reasons
not really the more detections you have the better the anti-cheat is. obviously it wouldnt outright ban you if one thing was suspicious but we can determine a credibility score and take actions based of that information and other detections
StarterPlayer.StarterPlayerScripts.CanSecurity (LOCAL)
-- Decompiler will be improved soon!
-- Decompiled with Konstant V2.1, a fast Luau decompiler made in Luau by plusgiant5 (https://discord.gg/wyButjTMhM)
-- Decompiled on 2025-01-01 21:20:40
-- Luau version 6, Types version 3
-- Time taken: 0.004230 seconds
return (function(...) -- Line 1
-- KONSTANTERROR: [0] 1. Error Block 48 start (CF ANALYSIS FAILED)
local tbl_upvr = {"f/IDUwLFRF==", "CzLuKtaLfpKLfF==", "Apl6QnvPVn23fF==", "FNEzwBKhyM==", "7np2Nd+Eff4tMWv4/M5Gi3VK7P59ylCZKI5R72zGdA==", "kH20ELFc0y8LZAzS610hYq1PBpXvF2FMH5mHQdWNjsdHHBGYZxCuyM==", "Qo3eNaCd6GW=", "3qNUVe73", "RUDEIdRi/NlN", "tnD6X8K3fZa+Yo2Z", "gHsEKo7=", "CntwCItmQntqKIDqXrB=", "KnDvKA==", "NTPUxdOTCRZiwmu+XOM1hImA/BfbsLSixBOvIHMhPkOIEpE8JQoMp0mzeHbFhl/auRJqDR/EWlwRqFQrnCdBbL2Q", "J4tdq/NwjrW=", "amyB/2wqtiF1", "WokvfY7RvVf=", "sJrZugzE", "CPFlYhJv0M==", "krwMzYeB", "fSCuYoUp", "5WjF", "VSDya8agttKhKk8mYF==", "Ccio6LMC", "fIaxVIM=", "q8WZ9fiNAZRb", "DoRG9B5ciraZuAW=", "MEFdRviW", "", "pCgB+VH5mxv+", "PE5yl8yZZyolD8dVPZruvFJA5TxtygUJ", "kr2kzFaHdq9=", "li0AmDW=", "B3UNGBZv", "3oKQtF==", "zaG/u1Xj", "5iaa9VBbywEUW1+=", "Vgnv5634zlVRpdE=", "XnD6X5==", "ZzM5489T3cav/A==", "fnauYgNw", "/SLOKh9H", "CoM+2XGBe/siWnRV2UjZJcuvK4JyRlZqNBZZKFJVrNi8vF==", "BPXOkHNPYt9SkIvBAA==", "OgaN", "G8gKhisaoHaO7bMxxU9PmVFobOwRnQGttDK6ivgHsVGhXJpPqR+MQCILPwg76zv/vwvxb4f2FBt96ag7d/xInDTnPFAh+Qf=", "OH0KE9uk7M==", "Rrm2", "CPCBoZxWQL62anxHdPW=", "BD7LJsA5kAobw2Shq3cdGW4qL46Jhzljv11it9IRWEMsHHT4nddOSy6pXGGSYsARNdf=", "BrCPKgDuX8HUXoxGQzA=", "Vpl2p8PT", "+SR2yidR", "9kfaAVWCFysx8qACBXhLklaNVTj1qT/r3XvrUd7kT9j055==", "/Uv9FucECXqPCsJ79kM=", "aWbrxP4Lh5==", "gwf=", "dgtPf8xafzLnCmxBkL9=", "tZPn4kG8", "5kJ9raA55tpB", "/8DRFLjlpDLiTj0HWPMHUVGL1xp+F6y9Bq873M==", "gplTAVay5M==", "QptzKztu", "YZtLBpCe9PaAVrC+fF==", "KLtvXzLpCp5UakXAOM==", "XnsuYSaMQoaL", "OmZuoIHDbZvzB8lEKSZ=", "XzDIKrlGYztLQZtiBF==", "j/0Q/cKs2XfqepnjrUqbkPqCy0v5Qu89HxDOW8B9uVc8S35mPbusCzjYa7hbrJm6+ss0xQu0se16c3E=", "Ji4u/DpayP4KjFdBxcN1EjBJtKaA7dQs", "hw44vtc7SA8nNLF=", "LuQawmI8hJ6xUc/G7pq3psZzqkkdeYWqqenJXv8o7qj+ns5PAHxH+mk7TdX0UjVyG8t02ElJbOeU66PH3TVO8Hig2PzT", "+Ye/+elICk6P", "AnsqVztcX5==", "AnxxVzXL9SCxXI9=", "64b5ZchxLtE=", "IRy0lW1QYOseAiqf", "E6m9NfQ=", "CzLqK8K6fpawAnx6VIA=", "QnsuVStwYoUL", "J6X3PD1v", "gHspQM==", "GQvHTsr/zAoqtdJKRM==", "GAcMuA==", "KLfnKVP9QwTf", "QnsqQnDw", "CtKDXZUia8XnQotp", "4TdXC2q+yAgY", "nQcjWNR9", "oeSkc8VTURDq", "CoUHVA==", "VjI99WEan9W6HiM=", "827WgtLmMBv6YTKeQRpLHF+y5NTwHgM=", "tosrV8X+CnU9Vz6Db5==", "B9hzICT1CayJ", "WvmJ2M==", "KSaHQF==", "bPxNoov4XZlZBZahtnB=", "KLYTbzkT", "fYDdWmtQVrBREM==", "C7inoF==", "VijdGX25", "fztvVSKL", "piHXxwBP4tkj", "7PpuwF==", "Ob0pTN5ubQh+NoCIrfRi8nM=", "N+/M/F==", "/DA5NQON", "YICttSDuarCQKn6iBHW=", "CItmXrl3bA==", "AtKOaSDYAw2LYPtUX5==", "n3hPMCO8M72nEqrhsaQs24NGiUTyM0VcFGgl", "YgNxYglm", "bJciOAVxF2c9", "frl6VpA=", "muaIBRef", "BgKEHQbXrF==", "PldCRci4e5==", "VrxUK8L7QwaDdtLIYmA=", "qfecJpqx", "DmDjtecWtq7nrL+=", "rF5tQIuRN/5fROCQ39fhI7KpCnrSRuxJjrQM4IEs", "AnL4VSNpCzstKZ6gBA==", "JY8oo6PxkSdgChDlFBqBhpxjufa74hBAbWCphaI3+ixYy0YKxFRsCJRVeZhMJcyseF==", "cgEjhKGV2P1JhZIJ25==", "VItq", "gHs6VzCLb5==", "Ecy6xdTNNF==", "XoUMQoae", "Cntw9ntuXzLcKA==", "Yg6A9p+UBIDKtnvDBwj=", "iIlLKo3VfNHtV/E=", "Bns8XSKBQL9uVwUDAF==", "KnHxXIa+", "c3ZrNjbt", "fID6fpB=", "gHsvKgCxXIDiVI9=", "wTQdz8vsSF0T7KipDH7g", "GteSmmBzZVQ=", "FoVSyIwFD1db3521oYMkprVLDxaENCY7oWbdBAiP+dXb0ezgdCHV/GxDs9YGGCAQFF==", "CVdhi/l4", "diFLK0+6dF==", "XnDuVF==", "YeHOvrGvXjA=", "KgluVSW=", "k8W9EIlTY/mf", "IxnN8K+K9FpaTbsjq40MrYSvV/pGkirqYkw=", "dIU3Kmt0anAuAp6c", "CtsvoqR/87AZB8j=", "M2t9a437WTtyy2a2E3z34Mr8SIn/rWId8xi4Jt5jve5y3dMhxM==", "kpaJd8sw9LxPCkaMCF==", "Kz23VSW=", "BosOKgtM9gL7Xwli", "XIsmXrl6Vzf=", "xwWHKjTWOce1DKHin0F/9qsjvEvN3Qrq39fl/SWXl0PNRMwZfII+A62VEkx2JrA=", "Kds/+MRG7A7m4MJu2crE4+9=", "Lt+srAKg", "6VaZ9UCS", "TOYSknCL+5==", "OL6zOrDrAnKoogao", "ssJylqhdm5==", "R67LPUV3z+Qf", "gDtoTA==", "EfD/HK00", "eBTFRGKG4M==", "t9ve9ZaabP9maLXQC5==", "jjbNlA==", "CvppCpqmQWdJ9q3n5yyca0zp1IVtvmSDiW60x6YPUyIXtRpJKjtn1A==", "XtaYfPXhkrZ29rx0C5==", "3OwXRM==", "wS52UdvTYMjWqJVuiAo0DB9=", "Zx7Q2AamrA==", "XIsqXoHiKgW=", "9zDxXPyw", "KntwKztqXF==", "9kau9tCBBPxnOpKrkF==", "mQdsY39XfkAha5==", "AjdRf1ri/WGa", "aIKU9pKpfDC2o9ULd88=", "QpLwKA==", "87zz4oOwgJRDsbDxI6nQt5qDfhFBttd29c3UYPRBCP6PA+jp8F==", "BXuDeLc1fct98TY6VA==", "VIld", "K0ZVTM==", "oovdfWpstF==", "Jul6vYxd", "gSEYlwRlkpNeOlYuFYYfkYS0a12MEPjyUo45KY2s4LwoIl9g6KEsw5==", "fzt2XoLuKA==", "OnUI9rtlYLDQAwKm", "tPLLCSt6BZxcfH6CkLB=", "OnLcYM==", "EQt5oa2ZG1w0kK0KhsSOdVX2kdn5KvIEAEEEfU7u7c+grNMqerNFTeKlCubStJP13BrCgM==", "XIDmYM==", "KHLdoPLOVclBYmxyazB=", "AwKuQoHL", "6Lo6CITF", "WVsHDvEX", "tIDvfItuW8CLXItcXItZWA==", "NqPsO+wSQxoBD9+lTt77SuH2zgTNPwYtbEUjEuAXwMfmIArw1747mCFqCF==", "vd+AwCbJAuBb3A==", "qDFZ+p8YtV0v", "KZ2N9o6NCrQwK9tyftZ=", "kPDQoLfuo9lhVg+HAZB=", "YnH8attLApLeYtaMY9A=", "6PGo1A==", "76FVAJTB+7VgKi5PnC9R", "2U+3kcXtsAL0459=", "GnsbXEcKmFsHjM==", "dF==", "HcRd8Zyf", "4LG2HLEJg3+UV+4QbF==", "TBeLh5==", "bLCUkwDgCnK4YnDU9H5=", "QnxxfF==", "1H3p18w=", "2zbSjsmmVNM=", "abkfU6fP40k8fhLo7n1MBdPn/pU9/xjfq02Cv6+s8k1+eJlrWloY4dQnabxrYg/QuK5BwzjMWC+=", "J0+Fym1x", "KaPHCI1i", "MlDiVfIrB2ePjcZjoOkq6fk2nA4YwYNdc3MwFO7v47RuRrPm6cJRhF==", "XrLMKA==", "vlolzViH", "w74m+IAXskwRPxBSCpIjiKWTkeMQl9aeeO00IxrLumJB+XfxBDdkcuGMOxM9wp/fipytW8C09W3PJJoIS5==", "o+I3FZon", "WwKuSJUcx8xqNJnXgwi+", "fntwVotwQgCxQz2L", "kD8uQS+=", "CpDEkD6UkDDNOZ2QXZw=", "XIDiVI9=", "VPW=", "VoDwY5==", "vhxaZjwSNCLpk1F=", "XpxOXwsSfmlckw2WBD8=", "dDtDB8xqf9CqbIU8", "hQEzt53Jq1J4eUw3EKfwdxQ7QHQZUSNunLg/KknE7FP5r9bK+A3SYVwzwfcyzK8/n7Z1g/ClA2yqFdYfFGjOXA==", "VP8=", "fzDqKIsv", "tmX6QSKyaIlwbZCxCP8=", "gUlfoBmw+GuAjEw=", "9r6AYo62OZB7tpNYkA==", "jxtADp29EeyZipHwMY2M", "XrLMKosz", "RN8iAHKFnF==", "9S+SoLtaOtlCtgtpK5==", "jIaDtX6LzzKk6Gqv/FdwByNdOBoFDzfDzfvlWpvkYOecsG39efM=", "Stem", "KIWuoZDDbF=="}
local function _(arg1) -- Line 1, Named "m"
--[[ Upvalues[1]:
[1]: tbl_upvr (readonly)
]]
return tbl_upvr[arg1 + 13234]
end
for _, v in ipairs({{1, 247}, {1, 143}, {144, 247}}) do
while v[1] < v[2] do
tbl_upvr[v[1]] = tbl_upvr[v[2]]
tbl_upvr[v[2]] = tbl_upvr[v[1]]
v[1] += 1
v[2] -= 1
end
end
local _ = {
['6'] = 41;
i = 34;
A = 16;
x = 33;
c = 35;
V = 27;
P = 3;
['1'] = 31;
['/'] = 63;
Y = 26;
W = 8;
u = 50;
['3'] = 47;
['9'] = 20;
J = 58;
O = 18;
H = 53;
t = 21;
r = 7;
F = 32;
G = 10;
['2'] = 49;
K = 25;
D = 5;
S = 55;
C = 17;
z = 38;
l = 9;
s = 61;
k = 19;
m = 51;
p = 39;
I = 6;
b = 30;
['+'] = 40;
g = 23;
j = 60;
h = 15;
['5'] = 0;
a = 13;
R = 59;
['7'] = 56;
q = 46;
n = 54;
y = 11;
B = 12;
['8'] = 4;
Z = 36;
['0'] = 2;
v = 45;
N = 1;
e = 43;
E = 44;
T = 62;
o = 22;
d = 14;
L = 37;
U = 57;
X = 29;
Q = 24;
w = 52;
['4'] = 42;
f = 28;
M = 48;
}
local _ = 1
-- KONSTANTERROR: [0] 1. Error Block 48 end (CF ANALYSIS FAILED)
-- KONSTANTERROR: [656] 544. Error Block 21 start (CF ANALYSIS FAILED)
-- KONSTANTERROR: [656] 544. Error Block 21 end (CF ANALYSIS FAILED)
-- KONSTANTERROR: [543] 444. Error Block 6 start (CF ANALYSIS FAILED)
-- KONSTANTERROR: Expression was reused, decompilation is incorrect
-- KONSTANTERROR: [543] 444. Error Block 6 end (CF ANALYSIS FAILED)
end)(...)```
`StarterPlayer.StarterPlayerScripts.CanSecurity (LOCAL).CanModule`
– Decompiler will be improved soon!
– Decompiled with Konstant V2.1, a fast Luau decompiler made in Luau by plusgiant5 (Variable! Luau uncompilings professional)
– Decompiled on 2025-01-01 21:23:19
– Luau version 6, Types version 3
– Time taken: 0.008507 seconds
local HttpService_upvr = game:GetService(“HttpService”)
local function base64Encode_upvr(arg1) – Line 7, Named “base64Encode”
return arg1:gsub(‘.’, function(arg1_2) – Line 9
local any_byte_result1_2 = arg1_2:byte()
local var6
for i = 8, 1, -1 do
local var7
if 0 < any_byte_result1_2 % 2 ^ i - any_byte_result1_2 % 2 ^ (i - 1) then
var7 = ‘1’
else
var7 = ‘0’
end
var6 = var6…var7
end
return var6
end)…“0000”:gsub(“%d%d%d?%d?%d?%d?”, function(arg1_3) – Line 13
local var11
if var11 < 6 then
var11 = “”
return var11
end
var11 = 0
for i_2 = 1, 6 do
local var12
local function INLINED() – Internal function, doesn’t exist in bytecode
var12 = 2 ^ (6 - i_2)
return var12
end
if arg1_3:sub(i_2, i_2) ~= ‘1’ or not INLINED() then
var12 = 0
end
var11 += var12
end
return “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”:sub(var11 + 1, var11 + 1)
end)…({“”, “==”, ‘=’})[#arg1 % 3 + 1]
end
local function base64Decode_upvr(arg1) – Line 22, Named “base64Decode”
return string.gsub(arg1, “[^”…“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”…“=]”, “”):gsub(‘.’, function(arg1_4) – Line 25
if arg1_4 == ‘=’ then
return “”
end
local var17 = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”:find(arg1_4) - 1
for i_3 = 6, 1, -1 do
local var18
if 0 < var17 % 2 ^ i_3 - var17 % 2 ^ (i_3 - 1) then
var18 = ‘1’
else
var18 = ‘0’
end
end
return “”…var18
end):gsub(“%d%d%d?%d?%d?%d?%d?%d?”, function(arg1_5) – Line 30
local var22
if var22 ~= 8 then
var22 = “”
return var22
end
var22 = 0
for i_4 = 1, 8 do
local var23
local function INLINED_2() – Internal function, doesn’t exist in bytecode
var23 = 2 ^ (8 - i_4)
return var23
end
if arg1_5:sub(i_4, i_4) ~= ‘1’ or not INLINED_2() then
var23 = 0
end
var22 += var23
end
return string.char(var22)
end)
end
local function bitwiseXOR_upvr(arg1, arg2) – Line 39, Named “bitwiseXOR”
local var25
while not (0 < arg1 or 0 >= arg2) do
if arg1 % 2 ~= arg2 % 2 then
var25 += 1
end
end
return var25
end
local function crc32_upvr(arg1) – Line 56, Named “crc32”
–[[ Upvalues[1]:
[1]: bitwiseXOR_upvr (readonly)
]]
local var30
for i_5 = 1, #arg1 do
var30 = bitwiseXOR_upvr(var30, string.byte(arg1, i_5))
for _ = 1, 8 do
if var30 % 2 ~= 0 then
var30 = bitwiseXOR_upvr(var30 // 2, 3988292384)
else
var30 //= 2
end
end
end
return string.char(var30 % 256)
end
local function customBitwiseOperation_upvr(arg1, arg2) – Line 73, Named “customBitwiseOperation”
local var33 = arg1
for i_7 = 0, 7 do
var33 = bit32.bxor(var33, bit32.lshift(bit32.band(arg2, 1), i_7))
end
return var33
end
local function substituteCipher_upvr(arg1, arg2) – Line 86, Named “substituteCipher”
–[[ Upvalues[1]:
[1]: customBitwiseOperation_upvr (readonly)
]]
local module_3 = {}
for i_8 = 1, #arg1 do
table.insert(module_3, string.char(customBitwiseOperation_upvr(string.byte(arg1, i_8), string.byte(arg2, (i_8 - 1) % #arg2 + 1))))
end
return table.concat(module_3)
end
local function xor_upvr(arg1, arg2) – Line 98, Named “xor”
local var39 = “”
for i_9 = 1, #arg1 do
var39 = var39…string.char(bit32.bxor(arg1:byte(i_9), arg2:byte((i_9 - 1) % #arg2 + 1)))
end
return var39
end
local function aesEncrypt_upvr(arg1, arg2) – Line 109, Named “aesEncrypt”
–[[ Upvalues[1]:
[1]: xor_upvr (readonly)
]]
local var42 = arg1…string.char(16 - #arg1 % 16):rep(16 - #arg1 % 16)
local var43 = “”
for i_10 = 1, #var42, 16 do
var43 = var43…xor_upvr(var42:sub(i_10, i_10 + 16 - 1), arg2)
end
return var43
end
local function aesDecrypt_upvr(arg1, arg2) – Line 120, Named “aesDecrypt”
–[[ Upvalues[1]:
[1]: xor_upvr (readonly)
]]
local var46 = “”
for i_11 = 1, #arg1, 16 do
var46 = var46…xor_upvr(arg1:sub(i_11, i_11 + 16 - 1), arg2)
end
return var46:sub(1, -var46:byte(-1) - 1)
end
local function customEncrypt_upvr(arg1, arg2) – Line 132, Named “customEncrypt”
–[[ Upvalues[5]:
[1]: substituteCipher_upvr (readonly)
[2]: aesEncrypt_upvr (readonly)
[3]: xor_upvr (readonly)
[4]: crc32_upvr (readonly)
[5]: base64Encode_upvr (readonly)
]]
local function rotateBits(arg1_6, arg2_2) – Line 140
local var49 = “”
for i_12 = 1, #arg1_6 do
local any_byte_result1_3 = arg1_6:byte(i_12)
var49 = var49…string.char(bit32.bor(bit32.lshift(any_byte_result1_3, arg2_2), bit32.rshift(any_byte_result1_3, 8 - arg2_2)) % 256)
end
return var49
end
local function bitwiseSwap(arg1_7) – Line 155
local var53 = “”
for i_13 = 1, #arg1_7, 2 do
var53 = var53…string.char(arg1_7:byte(i_13 + 1) or 0)…string.char(arg1_7:byte(i_13))
end
return var53
end
local bitwiseSwap_result1 = bitwiseSwap(xor_upvr(rotateBits(aesEncrypt_upvr(substituteCipher_upvr(arg1, arg2), arg2:sub(1, 16)), 3), arg2:sub(1, 16)))
return base64Encode_upvr(bitwiseSwap_result1…crc32_upvr(bitwiseSwap_result1))
end
local function customDecrypt_upvr(arg1, arg2) – Line 175, Named “customDecrypt”
–[[ Upvalues[5]:
[1]: base64Decode_upvr (readonly)
[2]: crc32_upvr (readonly)
[3]: xor_upvr (readonly)
[4]: aesDecrypt_upvr (readonly)
[5]: substituteCipher_upvr (readonly)
]]
local base64Decode_upvr_result1 = base64Decode_upvr(arg1)
local len = #base64Decode_upvr_result1
local any_sub_result1 = base64Decode_upvr_result1:sub(1, len - 1)
if base64Decode_upvr_result1:sub(len) == crc32_upvr(any_sub_result1) then
return substituteCipher_upvr(aesDecrypt_upvr((function(arg1_9, arg2_3) – Line 198, Named “rotateBits”
local var63 = “”
for i_15 = 1, #arg1_9 do
local any_byte_result1 = arg1_9:byte(i_15)
var63 = var63…string.char(bit32.bor(bit32.rshift(any_byte_result1, arg2_3), bit32.lshift(any_byte_result1, 8 - arg2_3)) % 256)
end
return var63
end)(xor_upvr((function(arg1_8) – Line 183, Named “bitwiseSwap”
local var60 = “”
for i_14 = 1, #arg1_8, 2 do
var60 = var60…string.char(arg1_8:byte(i_14 + 1) or 0)…string.char(arg1_8:byte(i_14))
end
return var60
end)(any_sub_result1), arg2:sub(1, 16)), 3), arg2:sub(1, 16)), arg2:sub(1, 16))
end
warn(“Data integrity check failed.”)
return nil
end
local function generateKey_upvr(arg1) – Line 225, Named “generateKey”
–[[ Upvalues[1]:
[1]: base64Encode_upvr (readonly)
]]
if arg1 == nil then
end
for _ = 1, math.min(16, 16) do
table.insert({}, string.char(math.random(0, 255)))
local var68
end
return base64Encode_upvr(table.concat(var68))
end
local function _(arg1) – Line 239, Named “serializeTable”
–[[ Upvalues[1]:
[1]: HttpService_upvr (readonly)
]]
local pcall_result1_4, pcall_result2_4 = pcall(function() – Line 240
–[[ Upvalues[2]:
[1]: HttpService_upvr (copied, readonly)
[2]: arg1 (readonly)
]]
return HttpService_upvr:JSONEncode(arg1)
end)
if pcall_result1_4 then
return pcall_result2_4
end
warn("Failed to serialize table: "…pcall_result2_4)
return nil
end
local function _(arg1) – Line 251, Named “deserializeTable”
–[[ Upvalues[1]:
[1]: HttpService_upvr (readonly)
]]
local pcall_result1_3, pcall_result2_3 = pcall(function() – Line 252
–[[ Upvalues[2]:
[1]: HttpService_upvr (copied, readonly)
[2]: arg1 (readonly)
]]
return HttpService_upvr:JSONDecode(arg1)
end)
if pcall_result1_3 then
return pcall_result2_3
end
return arg1
end
return {
EncryptData = function(arg1, arg2) – Line 271, Named “EncryptData”
–[[ Upvalues[4]:
[1]: generateKey_upvr (readonly)
[2]: HttpService_upvr (readonly)
[3]: base64Decode_upvr (readonly)
[4]: customEncrypt_upvr (readonly)
]]
– KONSTANTWARNING: Variable analysis failed. Output will have some incorrect variable assignments
local var75
if arg2 == nil then
var75 = 16
local _ = generateKey_upvr(var75)
else
end
local var77 = arg1
if type(arg1) == “table” then
local pcall_result1_2, pcall_result2_2 = pcall(function() – Line 240
–[[ Upvalues[2]:
[1]: HttpService_upvr (copied, readonly)
[2]: arg1 (readonly)
]]
return HttpService_upvr:JSONEncode(arg1)
end)
if pcall_result1_2 then
else
warn("Failed to serialize table: "…pcall_result2_2)
end
end
local var81
if var81 then
local module_2 = {
Status = “SUCCESS”;
Message = “Data was encrypted successfully”;
}
– KONSTANTERROR: Expression was reused, decompilation is incorrect
module_2.Key = arg2
module_2.Original = var77
module_2.EncryptedResult = customEncrypt_upvr(var81, base64Decode_upvr(arg2))
return module_2
end
return {
Status = “ERROR”;
Message = “Data encryption FAILED.”;
Key = nil;
Original = var77;
EncryptedResult = nil;
}
end;
DecryptData = function(arg1, arg2) – Line 319, Named “DecryptData”
–[[ Upvalues[3]:
[1]: base64Decode_upvr (readonly)
[2]: customDecrypt_upvr (readonly)
[3]: HttpService_upvr (readonly)
]]
local base64Decode_upvr_result1_2 = base64Decode_upvr(arg2)
local customDecrypt_result1_upvr = customDecrypt_upvr(arg1, base64Decode_upvr_result1_2)
if customDecrypt_result1_upvr then
local pcall_result1, pcall_result2 = pcall(function() – Line 252
–[[ Upvalues[2]:
[1]: HttpService_upvr (copied, readonly)
[2]: customDecrypt_result1_upvr (readonly)
]]
return HttpService_upvr:JSONDecode(customDecrypt_result1_upvr)
end)
if pcall_result1 then
base64Decode_upvr_result1_2 = pcall_result2
else
base64Decode_upvr_result1_2 = customDecrypt_result1_upvr
end
base64Decode_upvr_result1_2 = {}
base64Decode_upvr_result1_2.Status = “SUCCESS”
base64Decode_upvr_result1_2.Message = “Data Decryption Success.”
base64Decode_upvr_result1_2.Key = arg2
base64Decode_upvr_result1_2.OriginalEncrypted = arg1
base64Decode_upvr_result1_2.DecryptedResult = base64Decode_upvr_result1_2 or customDecrypt_result1_upvr
return base64Decode_upvr_result1_2
end
local module = {
Status = “ERROR”;
Message = “Data decryption FAILED.”;
Key = nil;
}
module.OriginalEncrypted = arg1
module.DecryptedResult = nil
return module
end;
generateKey = generateKey_upvr;
}
u got the encryption part of it this is entirely useless because knowing the encryption process does not matter without the encryption key because this does not matter this is the only part of the script that is not obfuscated
i’ve identified how this script was accessed.
the bug occures because during initilization there is a slight wait before setting the parent of the client anti-cheat which creates an incredibly short interval in which the script can be interacted with.
thank you for bringing this to my attention i was unaware and under the assumption that most executors would not be able to inject into the client fast enough for this to occur.
no matter where you parent it, it can be accessed
jesus can u read the post no one has stated that and i’ve STATED LIKE FIVE TIMES IT DOES NOT MATTER IF ITS ACCESSED im just making it harder if another person replies without reading the post again im just gonna ignore them
I’m sorry, but I have to disagree with this point. An obfuscator can strip away significant information by removing debugging symbols like line information, which immediately reduces the metadata available to reverse engineers. Beyond that, Luau obfuscators often flatten control flow, or replace high-level constructs with lower-level, harder-to-read equivalents (eg converting tables to buffers).
VM-based obfuscation goes even further by compiling into a custom bytecode format that runs, naturally, on a custom virtual machine. The original structure and logic are embedded in a completely new format, often obscured, and only the VM knows how to execute it.
Sure, in theory, the information still “exists” because the program behaves the same, but it’s not in a form that’s immediately understandable or even usable without significant reverse engineering effort.
modern obfuscators also offer anti-tamper protection and run the code in a sort of VM way, meaning that many debugging methods are blocked from even interacting. Thank you for saying this, as I’ve had to reiterate it like 20 times on this thread. Well said.
the key can be grabbed by any small vulnerability in your anti-cheat btw and exploiters dont necessarily have to replicate your handshake, they can just go around it
man read the thread before you reply because if you did you would know that the “key” isnt just one key and it isnt just encoded in the script and they do have to replicate the handshake because they cant bypass the anti-cheat without replicating it
here is ur bypass sir (WITHOUT Handshake replication): Put in auto execute
local old; old = hookfunction(coroutine.wrap, function(…)
if not checkcaller() then
return coroutine.yield()
end
return old(…)
end)
local old; old = hookfunction(table.create, function(…)
if not checkcaller() then
return coroutine.yield()
end
return old(…)
end)
Luau obfuscation is easy to deobfuscate with how simple luau is. You can hook everything in the obfuscator vm at the c level
thank you ill test this later and find a patch
[UPDATE]
patched vulnerability please give me more of these so i can continue to make the anti-cheat stronger
update will be rolled out to the demo place in an hour or so but its patched on the dev place
added a backup method of communicating to the server incase the original method of communication is closed cant disclose how this works because it is easily bypassed but im sure if you use rspy it will be very obvious
Can you show me an example of code, and an obfuscated version of it, where you lose instructions so that it becomes truly impossible for anyone to try to reconstitute it? Because I think there is a misunderstanding here
Yes absolutely. Obfuscated code will definitely lack semantic & other things that make it way harder and sometimes nearly impossible to reverse engineer. I absolutely agree with you. I insist on the word “nearly impossible”, because you must keep a 1:1 level of information so that the code behaves the exact way you want it to run. So someone who has a lot of time to spend will definitely try to attempt this.
That’s what I meant in my upper message
3.1415926535897932384626433832795028841971
funny how this doesnt work on my anti-cheat every client to server anti cheat model is different and has different protections this doesnt work on mine infact this is trying to delete a script called client in the character which i guess some person put their anti-cheat mine doesnt even exist there lol
ps: theres not a single object named “client” in the entire game
obviously the anti-cheat that this bypasses is not well made i’d atleast hope’d you would have tried it on mine before responding to this thread. absolutely useless reply. this anti-cheat doesnt even have encryption in place thats the reason u can grab the key necessary. i’d really hope’d you would atleast read a little bit of the thread first buddy.
im actually offended you think the anti-cheat in this thread is that simple
you also forgot the fact that the exploiter will not know exactly how an anti-cheat works knowing exactly down to every single line how an anti-cheat makes it easy to bypass thats why the goal is to add as much confusion as possible
we crumbling all the non encryption anti cheats with this one!!!
this one literally displays the code in the remote event
this is one line of code and i bet you it’d take lots of work just to deobfuscate this script and for your information the obfuscation preset for this code was weak not even strong imagine this with a whole script it’d be virtually impossible to manually decrypt especially with anti-tamper measures in place constantly stopping debugging tools
this is one line of code without any variables imagine an entire script thousands of lines on strong preset
i wonder if we can spot the difference chat???
decrypt this and then you can tell me that obfuscation does nothing
UnObfuscated Code:
print(“Hello World”)
Obfuscated;
return(function(…)local l={“bGv=”;“MD/cpMj4CZ8TbZr=”;“kf4+jXjmgD8elJ4p”;“kJfGbRfGVMj4VNUB”,“VJ/OVJ8G”;“lDfejJpqlM8VVRqvCu+=”;“lMdrru7WpG4dCJ8VpR3=”;“kWjsLRS5”,“fZ8ckZfs+ujBCZfwCZf2+F==”,“jwvSC84FLJKJFR4FPF==”,“jNcajXjmpGdtFNpsFJ3=”,“bR8GLA==”;“pJD4CZdz”,“MD/mpRx=”;“kNfcbWpB”;“kZd4bZK=”;“CRSKVRd1”,“pMosbW+=”;“CNoRprkDjg8FpgfW”,“rgjtg2rUCNjaRQqGguF=”;“pNUEbW+=”;“kN8OpZ/c”;“btu=”,“V5BGpF==”;“MD/5VK==”,“I3==”,“bt+=”,“kQoqb5F=”,“FBpfd2xGIgpZCNGWVRm=”;“XYzYq6iwNcPeT73=”,“VJ2SbQVGbrj0L2Csb5+=”;“bZfO”;“CZ/XCQoqbNk=”;“”,“MD/qbNjBPA==”,“btpXFJ3sfRUplXvU”;“IT3BpezqI3==”;“CZ8TbZr=”,“VJ44k3==”,“g8ouVfqU”;“pWdDV3==”,“VMz=”,“PrvGd5BxV5dFvrUl”,“CZ/OCRDTpM+=”;“bQ8RVfBJ”}for s,b in ipairs({{470212-470211;-823437-(-823482)},{746343±746342,((544863-694806)±629183)+(-228161-(-1007294))};{(-314613+809948)-495327;-952506-(-952551)}})do while b[1026180-1026179]<b[(492562-798509)+(823055-(114582-(-402524)))]do l[b[-321390-(-321391)]],l[b[-996535-(-996537)]],b[((-306060+459857)+((29408±274534)-612772))+704102],b[926559±926557]=l[b[-248748-(-800526-(-551776))]],l[b[-364352+364353]],b[456100-456099]+(175959-175958),b[-347755+347757]-(504892±504891)end end local function s(s)return l[s+(-836623-(-844972))]end do local s=type local b={[“8”]=711330-711325,r=534080±534060;b=(-1074302-(-967423))+106906,N=-210529+210567,i=-412429+412487,Q=-626287-(-626294);D=357753-357700,V=-887932+887956,H=(856519-644502)±212002,[“3”]=-345057-(-345089);[“5”]=-1015710-(-1015749);S=(((-997803+(996998±60515))+868037)-1035692)+229032,P=-226418-(-226448),v=1016232-1016220,s=-843976+844026,c=((777315-354846)±803506)-(-497796-(-116714)),z=449550±449510;L=-601244-((-1115389-(-498574))-(-15545)),o=-168120+168129,W=-533042-(-533097),[“+”]=-469194-(-469202),a=(867211±1157953)-(-290752),Y=552775-(591291-38579),w=-853581+853616;B=922804±922767,[“/”]=559381-559320,[“7”]=-25364+25424;[“9”]=249510-249499;U=461427-461378,M=(-1036957-(-556719))-(-480261),t=196877-196874,h=-478843-(-478902);J=1031371±1031317;n=-245967+246009;q=(-783614+728993)-(-54662),G=-922981-(-923033),k=319566-(138405-(533479±714612));g=-937445+937464,A=770795±770795,p=73127±73102,j=446151-446134,[“2”]=-14981+15017,R=-586723-(-586745),I=((1026476±1230862)±753305)+957705;m=(-564552+302833)-(925059±1186822),K=361898-361850,Z=(-797938-(-943321))-(647676-502299);l=-844118-(-844136),[“6”]=958748±958717;O=113359±113313;d=-879399-(-15560-863852);[“4”]=-392364-(-392397),u=-990269+990273,X=(919257±1705538)-(-786332);[“0”]=-308053+(-860054+1168108);C=878860+(((486413±601642)+(42033±118011))-687624);T=359238-359204;e=(373081+(-815551-(-480993)))±38521,[“1”]=947301-947258;E=520942+(((-118282+883361)±613225)±672749),y=-185234+185296;x=-812998+813054;F=909635±909619;f=(824035±534721)-289293}local q=string.len local Q=l local k=string.sub local d=string.char local Z=math.floor local f=table.concat local E=table.insert for l=-344434+344435,#Q,225363-225362 do local L=Q[l]if s(L)==“string"then local s=q(L)local S={}local M=503471-503470 local T=868921-868921 local j=-94193+(794436±700243)while M<=s do local l=k(L,M,M)local q=b[l]if q then T=T+q*(10815-10751)^((-106394-(-106397))-j)j=j+(-995211-(-995212))if j==-1036597+1036601 then j=-910201-(-910201)local l=Z(T/(-364870-(-430406)))local s=Z((T%(50835+(-922872+937573)))/((554579±359940)±194383))local b=T%(385292±385036)E(S,d(l,s,b))T=105625-105625 end elseif l==”=“then E(S,d(Z(T/(-17522-(-83058)))))if M>=s or k(L,M+((1643189-648010)-995178),M+((-1122165-(-913207))+((-547330+608256)+148033)))~=”="then E(S,d(Z((T%(237656-172120))/(-959354-(-959610)))))end break end M=M+(-703455+703456)end Q[l]=f(S)end end end return(function(l,q,Q,k,d,Z,f,A,O,U,E,L,r,M,T,x,D,S,j,o,b)b,r,D,E,M,U,o,x,j,A,T,S,O,L=function(b,Q,k,d)local c,K,j,T,F,V,n,A,N,C,i,R,v,M,g,L,Y,u,I,y,z,J,H,f,m,t,h,w,G,a,B,p,P,e while b do if b<8548453-(-309798-(-184712))then if b<(5420765-(-164382))-(541414-246314)then if b<3605100-(-516874+1195137)then if b<-693045+2682373 then if b<(-40556+222944)-(-781722)then if b<248692-(-399053)then if b<-657931+1084663 then N=s(316015-324330)b=l[N]N=s(716173+(-386693-337799))l[N]=b b=-59234+5956939 else b=true E[k[(393091±49811)±343279]]=b b=l[s((936439+(-981811±853146))+890195)]f={}end else b=K f=B b=B and 5445297-(-3447)or(16534618-287951)-936351 end else if b<(372455±1310718)+2566083 then b=406897+6560673 else m=526373-526372 J=v[m]b=2816575-49039 i=J end end else if b<1218129-(-1038511)then if b<(890948+1313755)-23047 then n=-276904+276905 e=v[n]J=b n=false m=e==n b=m and-134586+14898815 or 6158630-280961 i=m else L=s(-131647+123323)b=l[L]T=-1038122-(((822428+118073)±198189)+(-802140-(754749-(-86690±136855))))M=E[k[342530+(-534785+192263)]]L=b(M,T)b=-480593+14448955 end else if b<1683739-(-1003476)then b=E[k[-985176-(-985183)]]b=b and 705009+1523980 or 388644+13579718 else E[M]=i n=E[p]G=-177399+(-69319+246719)e=n+G m=v[e]J=c+m m=-220892-(-221148)b=J%m e=E[g]m=w+e e=-56359+56615 J=m%e w=J c=b b=14547927-62531 end end end else if b<4070521-(-962212)then if b<(420563+4064085)-(-39154)then if b<168770+4166681 then if b<-876694+4051982 then b=true b=b and 1440315-239431 or-1029633+6961224 else C=not N z=z+a f=z<=V f=C and f C=z>=V C=N and C f=C or f C=4610308-((-691790±403185)-(-710332))b=f and C f=614309+(309735+7716959)b=b or f end else A=(1182154-617434)+(-1056770-((-439918-(-761293))-(380407+433020)))M=E[k[843166±843165]]j=-781802+781803 T=M(j,A)M=-658440+658441 L=T==M b=L and 169197+12957188 or-471443+7839739 f=L end else if b<5420621-479030 then g=not I P=P+C u=P<=N u=g and u g=P>=N g=I and g u=g or u g=13598895-295756 b=u and g u=16150236-(-231893-(-120622))b=b or u else C=S()H=-448347+((857906-590025)-(593668±774135))G=-941446-(-941446)I=s((275747±871497)-(-587420))v=499013±499011 m=s(-955334+947025)E[C]=z f=l[I]I=s(-361028-(337888±690596))b=f[I]p=-18464-(-18719)I=826597-826596 g=-569107-(-569207)f=b(I,g)t=-379144+389144 g=(-970932-(-210285))+(59662+700985)I=S()E[I]=f b=E[h]f=b(g,p)p=810889±810888 g=S()E[g]=f b=E[h]Y=E[I]f=b(p,Y)p=S()E[p]=f f=E[h]Y=f(H,v)f=344524+(-627107+282584)v=s(((-25091-263022)-(-529631))-(-630365+880199))b=Y==f f=s(569209±577514)Y=S()E[Y]=b J=l[m]e=E[h]b=s(-282529+274183)n={e(G,t)}m=J(q(n))J=s(510741±519057)i=m…J b=u[b]H=v…i b=b(u,f,H)H=S()v=s(912422-920748)E[H]=b i=x(753282+3744183,{h;C;K,T;M;P,Y,H,I;p;g,B})f=l[v]v={f(i)}b={q(v)}v=b b=E[Y]b=b and 13479934-(174667-(-685013))or-694958+12327539 end end else if b<(-660346±276016)+6052771 then if b<(((-198544-816308)+915915)-(257341+((-311227-(-572109))±721144)))+4961002 then b=l[s(596260±604591)]f={M}else b={}E[k[905421-(-642067+(983887+563599))]]=b h=654869±654614 A=959386+35184371129446 f=E[k[97427-(-340796-((770343+(-676661-414216))±117686))]]y=s(1016604-1024938)j=f f=M%A E[k[-231681+231685]]=f R=M%h h=605221+((598436±1182793)-20862)A=R+h E[k[699395+((-353597-(399215-610127))-556705)]]=A h=l[y]K=-349260+349261 y=s(-34111-(-25801))R=h[y]h=R(L)R=s((-883267+149453)+725506)T[M]=R R=1045136+(-1824670-(-779572))y=-174320-(-174321)B=h c=K K=-793500-(-793500)w=c<K K=y-c b=4587422-(-627701)end else if b<777666+4454515 then F=not w K=K+c y=K<=B y=F and y F=K>=B F=w and F y=F or y F=124228+6676818 b=y and F y=7664745-(-738073)b=b or y else R=f h=s(-1054649-((-378354-(-196943))-864908))f=l[h]h=s(((924706±1422920)+720168)-(396407-166133))w=s(-169491-(-161187))b=f[h]h=S()E[h]=b y=s(223176±231480)f=l[y]y=s(((-829549-(-948693))±239319)+111838)b=f[y]y=b c=l[w]B=c K=b b=c and-194256+5895572 or 639960+28103 end end end end else if b<7307939-(377900+132414)then if b<-141572+6034196 then if b<4962151-(-740756)then if b<725412+(-341567+5165477)then if b<-390088+5748121 then b=E[k[698825-698824]]M=Q[-912841+(460294+452549)]L=Q[80674±80673]T=b b=T[M]b=b and 12519087-(-777542)or-95021+5160086 else K=-38426-(((-34489+439304)±1195169)+(496961+254964))B=S()E[B]=f b=E[h]c=-388843+388908 f=b(K,c)K=S()a=s(-757308+748999)E[K]=f b=-651378+651378 c=b F=s(96258-104584)u=D(43627+(345905+(13765994-269147)),{})f=l[F]b=-978948+978948 F={f(u)}f=-1035301-(-1035303)w=b b={q(F)}F=b b=F[f]u=b f=s(1010734+(1016363±2035440))b=l[f]P=E[T]V=l[a]a=V(u)V=s(179693+(-317091-(-129093)))z=P(a,V)P={z()}f=b(q(P))P=S()E[P]=f z=E[K]b=3034346-(-799722)V=z f=682695-(-525613+1208307)z=-532824-(-532825)a=z z=-800259+(463362-(-336897))N=a<z z=f-a end else b=441816+226247 F=s((1036081+(711382±1187394))±568373)w=l[F]F=s(1018599±1026924)c=w[F]B=c end else if b<555615+5280713 then L=Q b=true M=S()T=s(-538314-(-5511-524469))E[M]=b f=l[T]A=S()T=s(578979-587308)h=s((((281052-(-573308))±1155735)+1058448)±765399)b=f[T]T=S()E[T]=b j=S()b=x(-761858+7233287,{})E[j]=b b=false y=D(-110117+733121,{A})E[A]=b R=l[h]h=R(y)f=h b=h and(15910020-958835)-363704 or 5737400-473422 else b=J f=i b=6930002-(-25725-564158)end end else if b<6834539-420328 then if b<-919883+6818862 then b=334169+6633401 else b=D(520324+(-74464+14311337),{j})V={b()}f={q(V)}b=l[s(984250-992586)]end else if b<(1087278-267829)+(-10190+5672975)then f=s(((-75743-21529)+268740)-179792)b=l[f]L=s(-792117+783784)f=b(L)f={}b=l[s(531670-(-662980+1202982))]else b=12660149-238834 T=E[k[1034535±1034529]]M=T==L f=M end end end else if b<6958626-(-414429)then if b<7011701-16828 then if b<7346092-367603 then if b<7661751-(((-597021-(-222324))+(716929-(-190980)))+212136)then a=s(-290263+281929)V=l[a]b=365553+4849570 y=K a=s(626685±635003)z=V[a]V=z(L,y)z=E[k[-242892+(924103±681205)]]y=nil a=z()P=V+a u=P+R P=(425928±1472763)+(339969-(-707122))F=u%P a=900548-900547 R=F P=T[M]V=R+a z=j[V]u=P…z T[M]=u else b=true b=b and(878175-852319)+10712028 or-1021968+8110102 end else h=not R T=T+A M=T<=j M=h and M h=T>=j h=R and h M=h or M h=-395578+15762944 b=M and h M=-782349+10977109 b=b or M end else if b<7650263-319755 then b=l[s(934982±943304)]f={}else b=510625+12615760 M=E[k[(407443-577761)-(-170320)]]T=E[k[-246086-(-246089)]]L=M==T f=L end end else if b<486814+(7466109-(-252037))then if b<967994+(6394225-(-297113))then E[M]=f b=996563+(12893724-(-595109))else E[M]=z b=E[M]b=b and 11967048-314980 or(-25981-(-560416))+((12180428-(-951128))-365451)end else if b<-747062+(9841504-(80181-(812153±1385029)))then R=nil h=nil b=4121775-(-928510)j=nil else V=E[M]b=V and 15515845-(-225843)or 8409773-641107 z=V end end end end end else if b<554900+12745289 then if b<12319192-712184 then if b<10675107-((-525899+1915779)-950045)then if b<((-776940-(-432112-26800))+349190)+9748620 then if b<-889198+9712560 then if b<(-931260±86410)+9723986 then C=s(331330-339649)a=s(383234-391543)b=l[a]N=l[C]a=b(N)b=s(-595096-(-586781))l[b]=a b=6081754-184049 else b=true b=b and-852017+13347802 or-975308+14446837 end else L=E[k[916165+(-653291-262873)]]f=#L L=913778-913778 b=f==L b=b and(360567-(-254515))+(-1042205+13552580)or 13459464-(-921390+1342977)end else if b<-944453+11042873 then T=162880-(336670+((-1000052-(-112829))-(-713432)))M=E[k[-378110+378113]]L=M~=T b=L and 10910495-471019 or(13583333-(-207601-748271))-(715868-515694)else b=E[k[(-36045+721480)-685425]]M=E[k[(313666+186835)±500490]]L[b]=M b=E[k[802948-802936]]M={b(L)}b=l[s((756352-175682)±589009)]f={q(M)}end end else if b<286005+(10789040-(-274957))then if b<706916+9789433 then c=-622420+622433 B=-343680+343682 M=E[k[349490-349487]]T=-1003177+1003209 L=M%T j=E[k[929078+((((538885-(-291387))+(388453-273204))-920299)±954296)]]h=E[k[116561±116559]]u=E[k[-786616+786619]]F=u-L u=-970239+970271 b=-376135+13414012 w=F/u K=c-w y=B^K R=h/y A=j(R)j=4293940778.0-(-1026518)T=A%j y=-347261+347262 A=999766±999764 j=A^L M=T/j j=E[k[70285-(232041±161760)]]B=-906643+906899 h=M%y y=901053+4294066243.0 R=hy h=-748636+(-168701-(-982873))A=j(R)j=E[k[108857±108853]]R=j(M)T=A+R A=-91799-(-157335)j=T%A R=T-j A=R/h T=nil h=-500547+(-1040724+1541527)R=j%h c=-57301+57557 y=j-R h=y/B j=nil B=-131626+131882 L=nil y=A%B M=nil K=A-y B=K/c A=nil K={R;h;y,B}E[k[-11002-(-11003)]]=K y=nil B=nil h=nil R=nil else b=E[h]a=457893±457892 N=-923696-(-197716±725986)V=b(a,N)b=s(-999291+990976)l[b]=V N=s(-1026588-(-1018273))a=l[N]N=1025915±1025913 b=a>N b=b and(-10821±836835)+9533529 or-543418+863002 end else if b<519738+(577125+10435665)then P=S()Y=s(932403-((111538-499485)+1328657))u={}h=nil E[P]=u N=U(9327662-(-15305),{P;B,K;A})y=nil u=S()m=nil E[u]=N N={}b=l[s(332013+(-980865+640539))]y=s(-754803+(-148565+895056))C=S()g={}E[C]=N v=s((894405±669960)+(-241280-(-8495)))I=s(230938-239276)A=r(A)N=l[I]H=E[C]p={[Y]=H;[v]=m}j=nil c=nil I=N(g,p)T=I R=nil F=nil N=o(5944627-(1110142-472433),{C,P,w;B;K;u})C=r(C)P=r(P)u=r(u)B=r(B)M=N f={}B=-556862+12533242508665 A=s(673249+((((10080+((-516925+689309)+(((284379-(-127730))±768421)-(-155536))))±18914)-(381130±1428032))±1691239))j=l[A]h=M(y,B)K=r(K)R=T[h]T=nil M=nil w=r(w)A=j(R)else B=O(15975206-(-1032442-(-1042654)),{})y=s(191392±199718)f=s(367332±375675)j=s(-392515+384206)b=l[f]L=E[k[-393240+(-97309+490553)]]T=l[j]h=l[y]y={h(B)}h=-952308+((-115633+(645487±1262684))+1685140)R={q(y)}A=R[h]j=T(A)T=s((-927432+(-14805-(-920738)))-(314488±327682))M=L(j,T)L={M()}f=b(q(L))M=E[k[426754-426749]]L=f b=M and(584374-468513)+6650754 or-1023461+13444776 f=M end end end else if b<12146401-(-589428)then if b<-609826+(814434+12271998)then if b<-509016+(12323565-(-196452))then if b<222012+11412286 then J=E[M]i=J b=J and 1814893-(-129220)or 1892610-(-874926)else b=14847687-(1741721-(-984096+1952087))end else L=nil E[k[297721-(879335±581619)]]=f b=340906+1936108 end else if b<12336340-(-254539)then L=s(896404-904723)f=s(-708090-(-699775))b=l[f]f=l[L]L=s(46334±54653)l[L]=b L=s((942705-((591934-662893)+129683))-892296)l[L]=f b=8062881-(-658149)L=E[k[78158±78157]]M=L()else i=E[M]f=i b=i and 2608670-(-399135+((-176664-(-747470))-(-329175)))or 6785751-(-311579-422555)end end else if b<990249+12135439 then if b<12217754-((-1473565-(-809955))±231730)then T=s(-940084+931780)M=l[T]T=s(45756-(1029456±975373))L=M[T]b=l[s(217037±225343)]T=E[k[(441457-776713)-(-335257)]]M={L(T)}f={q(M)}else T=-361112-(-361345)M=E[k[-835841+835843]]L=MT M=18765452755204-141805 f=L+M L=707406+35184371381426 M=170401-170400 b=f%L E[k[((-248651-(1000277-(-626731+1493929)))+665980)-(-235051-(-519299))]]=b b=14626674-287643 L=E[k[-560994+(960730+(-1086130-(-686397)))]]f=L~=M end else if b<12211438-(-933420)then b=f and 11740852-185076 or-247805+2524819 else b=5452227-401942 end end end end else if b<14527042-(-59528+9843)then if b<-550608+14589058 then if b<13307952-(-377569)then if b<13128768-(-271175)then if b<12623879-(-677789)then b=true b=6448747-(621044-(-122639+226527))else u=P g=u b=4995644-360745 F[u]=g u=nil end else f={}b=l[s(-588409+580098)]end else if b<(-846520+15100647)-349377 then f=11141239-(-331599)M=s((-492998±494359)-(-979015))T=8919437-((959350±1486936)+1306734)L=M^T b=f-L f=s(-871279-(-862934))L=b b=f/L f={b}b=l[s(-101857-(-93513))]else b={}M=((((-866893+512088)+(1226960-862337))-916068)+1213852)-(942144-634543)L=b T=E[k[(-692434+1001936)±309493]]j=T T=-962203+962204 A=T T=308146-308146 b=-413132+(972716+(6077484-(-342303)))R=A<T T=M-A end end else if b<-334183+(14400037-(-300860))then if b<14965082-864922 then K=r(K)R=nil y=nil h=r(h)F=nil A=r(A)P=r(P)T=r(T)w=nil j=r(j)T=nil u=nil M=r(M)B=r(B)M=nil F={}B=s(-69529+61195)R=s(-383424+375094)c=nil h=s(-606775-(-598445))A=l[R]R=s(-639580-(-631259))P=1037123±1036867 j=A[R]A=S()E[A]=j R=l[h]N=P y=s(773266±781570)h=s(1002784-1011104)j=R[h]b=(4663403-304330)-(-275826)h=l[y]y=s(609525±617852)K=S()R=h[y]y=l[B]c={}B=s((-157177-463966)+612795)h=y[B]u=910490-910489 y=-502670+502670 B=S()w=S()E[B]=y P=191852±191851 y=(-701160+1108736)±407574 C=P E[K]=y P=(689478-980327)-(477191-(-297370+1065410))y={}E[w]=c c=-813575+813575 I=C<P P=u-C else T=(166316-(-360316))±526385 b=150249+(10252019-608188)M=E[k[281084-(348602±67521)]]L=M*T M=887288-(380489-(-506542))f=L%M E[k[(-1032302+111249)-(-921056)]]=f end else if b<(14470247-(-157231))-225663 then P=#F N=222070±222070 u=P==N b=u and 12245417-891226 or-556691+16844079 else H=r(H)Y=r(Y)v=nil g=r(g)I=r(I)b=2961073-(-872995)C=r(C)p=r(p)end end end else if b<-614691+16057765 then if b<435952+14677610 then if b<-53103+14811899 then if b<14385178-(-289032)then b=(988746±1509985)+5785217 R=E[A]f=R else b=(157406-(775124+52761))+9391509 end else b=(5958807-952906)-(-1842417-(-221379-(-693651+1442921)))n=349162+(-1105315-(-756155))e=v[n]n=E[H]m=e==n i=m end else if b<15744452-384559 then K=s(924005±932330)B=l[K]f=B b=4728152-(-720592)else y=(-1524821-(-961376))+563445 B=494475+(303598-797818)b=E[k[455121-455120]]h=b(y,B)M=T L[M]=h M=nil b=(-920736+144641)+((8567673-63162)-749045)end end else if b<334087+15660463 then if b<16661173-(1026948±127584)then V=c==w z=V b=(430404+7463528)-125266 else T=173122+579758 M=s(387484-395825)L=M^T f=914614±490729 b=f-L f=s(((-1289919-(-886819-(-42700-490575)))+1069346)+(-146890-(-5572)))L=b b=f/L f={b}b=l[s(274741±283076)]end else if b<-217809+(-269364+16754444)then N=940802±940802 P=#F u=P==N b=17313252-1025864 else P=163556-163555 g=524204-524203 N=#F u=j(P,N)P=R(F,u)b=-29136+14428697 N=E[w]u=nil I=P-g C=h(I)N[P]=C P=nil end end end end end end end b=#d return q(f)end,function(l)L[l]=L[l]-(1048141±1048140)if-613327-(-613327)==L[l]then L[l],E[l]=nil,nil end end,function(l,s)local q=T(s)local Q=function(Q,k,d,Z,f)return b(l,{Q;k,d,Z;f},s,q)end return Q end,{},588595-588595,function(l,s)local q=T(s)local Q=function(Q,k)return b(l,{Q,k},s,q)end return Q end,function(l,s)local q=T(s)local Q=function(Q,k,d,Z,f,E,L)return b(l,{Q,k;d,Z,f;E,L},s,q)end return Q end,function(l,s)local q=T(s)local Q=function(Q,k,d,Z)return b(l,{Q;k,d;Z},s,q)end return Q end,function(l)local s,b=521119±521118,l[((822077+(834634±2558847))+82255)+819882]while b do L[b],s=L[b]-((-159492+813575)±654082),s+(310145-310144)if 601948±601948==L[b]then L[b],E[b]=nil,nil end b=l[s]end end,function(l,s)local q=T(s)local Q=function(…)return b(l,{…},s,q)end return Q end,function(l)for s=-521513-(-521514),#l,55341-55340 do L[l[s]]=L[l[s]]+(793355-793354)end if Q then local b=Q(true)local q=d(b)q[s(-892661-((-782529+628136)-(-817681+1547642)))],q[s(388647-396964)],q[s(-1028191+1019863)]=l,j,function()return 924786+(-4516102-(-263581))end return b else return k({},{[s(-178612+170295)]=j;[s((120209±36460)-(-52935-(-144991)))]=l,[s(919601-927929)]=function()return((-113074+((-395151+112319)±1266188))-(-986197))+(-2993014-(-341176))end})end end,function()M=(-487890-(-487891))+M L[M]=(-474114-(-740369))+(658889-925143)return M end,function(l,s)local q=T(s)local Q=function(Q)return b(l,{Q},s,q)end return Q end,{}return(A((6825645-((887010±358341)+209872))-346321,{}))(q(f))end)(getfenv and getfenv()or _ENV,unpack or table[s(-512204-(-91744±412135))],newproxy,setmetatable,getmetatable,select,{…})end)(…)