Run it
Copy the script and paste it into your executor.
gmatch, sub, gsub, format, char, byte = .gmatch, .sub, .gsub, .format, .char, .byte
uchar, ucode, upattern = utf8.char, utf8.codepoint, utf8.charpattern
, = ,
tinsert = .insert
floor, clamp, random = .floor, .clamp, .random
bit32_bxor = bit32.bxor
LuaEscapeCodes = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
}
Quotes = {
[] = ,
[] =
}
(File, ByteLength)
(String)
String = (String, , (Character)
LuaEscapeCodes[Character]
)
String = (String, , (Hex)
((Hex, ))
)
String
Crypt = {
Encoded = {},
Used = {},
CharLen = ByteLength (, )
};
Crypt:(len)
len = len
key = ;
hex = {, , , , , , , , , , , , , , , }
_ = , len
key = key .. hex[(, #hex)]
key
Crypt:(String, Quote)
Encoded =
String = (String, Quote, .. Quote)
String = (String)
Char (String, upattern)
Generated = Crypt:(Crypt.CharLen) .. Crypt:(Crypt.CharLen)
Crypt.Encoded[Char] = Crypt.Encoded[Char] Generated
Encoded = Encoded .. (Crypt.Encoded[Char])
Encoded
Crypt:()
List = Crypt.Encoded;
String =
Char, Value , List
Value = (Value, , )
String = String .. (, Value, (Char))
String ..
Crypt.FunctionCode =
Crypt.FunctionName = .. Crypt:();
Pattern =
N, Quote , Quotes
QuotePattern = (Pattern, Quote, Quote, Quote)
NQuotePattern = (Pattern, N, N, N)
(String)
String ==
String = (String, NQuotePattern, (String2)
N .. String2 .. N
)
(, Crypt.FunctionName, Crypt:(String, Quote))
File = (File, QuotePattern, Inner)
(Crypt.FunctionCode, Crypt.FunctionName, .(, Crypt.CharLen * ), Crypt:()) .. File
Code2 = (, )
(Code2)Protect strings from obfuscator constant dumps at the cost of performance. You need to prevent string.gsub & utf8.char hooks, Otherwise this is pretty much pointless, (Prevent those hooks so that when the script is ran, they cannot just get all the strings). Make sure the encoded version is obfuscated, with the antihooks. Usage: local ByteLength = 4 -- How many bytes each character should be, recommend 3-6 writefile("encoded.lua", ParseStrings(readfile("rawtext.lua")), ByteLength)