-- XFU5K470R - Advanced Lua Obfuscator -- Copyright (C) 2012 LoDC -- I lost the actual source code when my file server hard drive corrupted. -- This is the best backup i could find function obfuscate(code, level, mxLevel) local function print(...) end local concat = function(...) return table.concat({...}, "") end math.randomseed(os and os.time() or tick()) level = level or 1 mxLevel = mxLevel or 3 local a = "" -- STRIP COMMENTS code = code:gsub("(%-%-%[(=*)%[.-%]%2%])", "") code = code:gsub("(%-%-[^\r\n]*)", "") -- RIP ALL CONSTANT STRINGS OUT local function dumpString(x) return concat("\"", x:gsub(".", function(d) return "\\" .. string.byte(d) end), "\"") end local function dumpString2(x) local x2 = "\"" local x3 = "" for _,__ in x:gmatch("%[(=*)%[(.-)%]%1%]") do x3 = __:gsub(".", function(d) return "\\" .. string.byte(d) end) end return concat(x2, x3, "\"") end local function GenerateSomeFluff() local randomTable = { "N00BING N00B TABLE", "game.Workspace:ClearAllChildren()", "?????????", "game", "Workspace", "wait", "loadstring", "Lighting", "TeleportService", "error", "crash__", "_", "____", "\\\"FOOLED YA?!?!\\\"", "\\\"MWAHAHA H4X0RZ\\\"", "string", "table", "\\\"KR3D17 70 XFU5K470R\\\"", "string", "os", "tick", "\"system\"" } --for i = 1, 100 do print(math.random(1, #randomTable)) end local x = math.random(1, #randomTable) if x > (#randomTable / 2) then local randomName = randomTable[x] return concat("local ", string.rep("_", math.random(5, 10)), " = ", "____[#____ - 9](", dumpString("loadstring(\"return " .. randomName .. "\")()"), ")\n") elseif x > 3 then return concat("local ", string.rep("_", math.random(5, 10)), " = ____[", math.random(1, 31), "]\n") else -- x == 3, 2, or 1 return concat("local ", ("_"):rep(100), " = ", dumpString("XFU5K470R R00LZ"), "\n") end end local function GenerateFluff() --local x = { } for i = 1, math.random(2, 10) do table.insert(x, GenerateSomeFluff()) end return table.concat(x) return GenerateSomeFluff() end --a = "local _ = function(x) return string.char(x) end " a = a .. "local CONSTANT_POOL = { " local CONSTANT_POOL = { } local i = 0 -- " local last = "" local instr = false local foundOne = true while foundOne do foundOne = false for i2 = 1, code:len() do local c = code:sub(i2, i2) if c == "\"" then if code:sub(i2 - 1, i2 - 1) == "\\" then if instr then last = last .. "\"" end else instr = not instr if not instr then if not CONSTANT_POOL[last] then CONSTANT_POOL[last] = i a = a .. "[" .. i .. "]" .. " = " .. dumpString(last) .. ", " code = code:gsub("\"" .. last .. "\"", "(CONSTANT_POOL[" .. CONSTANT_POOL[last] .. "])") i = i + 1 else code = code:gsub("\"" .. last .. "\"", "(CONSTANT_POOL[" .. CONSTANT_POOL[last] .. "])") end last = "" foundOne = true break end end else if instr then last = last .. c end end end end -- ' local last = "" local instr = false local foundOne = true while foundOne do foundOne = false for i2 = 1, code:len() do local c = code:sub(i2, i2) if c == "'" then if code:sub(i2 - 1, i2 - 1) == "\\" then if instr then last = last .. "'" end else instr = not instr if not instr then if not CONSTANT_POOL[last] then CONSTANT_POOL[last] = i a = a .. "[" .. i .. "]" .. " = " .. dumpString(last) .. ", " code = code:gsub("'" .. last .. "'", "(CONSTANT_POOL[" .. CONSTANT_POOL[last] .. "])") i = i + 1 else code = code:gsub("'" .. last .. "'", "(CONSTANT_POOL[" .. CONSTANT_POOL[last] .. "])") end last = "" foundOne = true break end end else if instr then last = last .. c end end end end -- [(=*)[ for var in code:gmatch("(%[(=*)%[.*%]%2%])") do --for var in code:gmatch("%[(=*)%[.-%]%1%]") do if not CONSTANT_POOL[var] then a = a .. "[" .. i .. "]" .. " = " .. dumpString2(var) .. ", " CONSTANT_POOL[var] = i for i2 = 1, code:len() do if code:sub(i2, i2 + var:len() - 1) == var then code = code:sub(1, i2 - 1) .. "(CONSTANT_POOL[" .. i .. "])" .. code:sub(i2 + var:len()) end end --code = code:gsub(var, "(CONSTANT_POOL[" .. CONSTANT_POOL[var] .. "])") i = i + 1 end end a = a .. concat("[", i, "] = \"\88\70\85\53\75\52\55\48\82\32\49\53\32\52\87\51\53\48\77\51\46\32\75\82\51\68\49\55\32\55\48\32\88\70\85\53\75\52\55\48\82\33\"") a = a .. " }\n" --print(code) -- SOME CHANGERS local _VAR_NAME_ = 0 local function genVarName() _VAR_NAME_ = _VAR_NAME_ + 1 return "_" .. _VAR_NAME_ end if level == 1 then local function GetReplacement() local s = "" for i = 1, math.random(6,20) do s = s .. string.char(math.random(65,90)) --97,123 lowercase end return s end local library = {} -- functions for fType in code:gmatch("function ([%w_]+)%(") do -- for fType in x:gmatch("(function %a+%(%))") do local replacement = GetReplacement() --print(fType) if #fType > 5 then library[fType] = replacement code = code:gsub("function " .. fType, "function " .. replacement) end end for fCall in code:gmatch("([%w_]+)%(") do -- for fCall in x:gmatch("(%a+)%(%)") do if library[fCall] then code = code:gsub(fCall .. '%(', library[fCall] .. '%(') end end -- variables --[[for lType in code:gmatch("(local [%w_]+)") do local replacement = GetReplacement() local varName = lType:sub(7) if #varName > 4 then library[varName] = replacement code = code:gsub(lType, "local " .. replacement) end end]] local function isKeyword(s) local s = "and break do else elseif end false for function if in local nil not or repeat return then true until" for w in s:gmatch("(%w+)") do --if w:find(s) ~= nil then -- return true --end for i = 1, w:len() do if s:sub(1, i) == w:sub(1, i) then return true end end end return false end for each in code:gmatch("([%w_]*)%s*=") do if #each > 3 and not isKeyword(each) then --each:sub(1, 4) ~= "loca" and --each:sub(1, 5) ~= "local" and --each:sub(1, 5) ~= "funct" and --each:sub(1, 6) ~= "functi" and --each:sub(1, 7) ~= "functio" and --each:sub(1, 8) ~= "function" then local varName = GetReplacement() code = code:gsub(each, varName) --code = code:gsub("%[" .. name, "[" .. newName) --code = code:gsub("%(" .. name, "(" .. newName) --code = code:gsub(name .. "(%s)%.", newName .. "%1.") --code = code:gsub(name .. "%s*=", newName .. " =") --code = code:gsub(name .. "%s*([+-/*%^])", newName .. " " .. "%2") end end end -- STRIP ALL WHITESPACE (AT THIS POINT IT DOESN'T MATTER FOR VARIABLES, THEY'RE GONE) code = code:gsub("[\n]+", " ") code = code:gsub("[\r]+", " ") code = code:gsub("[\t]+", " ") code = code:gsub("[ ]+", " ") -- ' ' becomes ' ' a = a .. code -- CONVERT TO CHAR/TABLE/LOADSTRING THING math.randomseed(os and os.time() or tick()) local __X = math.random() local a2 = [[ math.randomseed(]] .. __X .. [[) ____ = { function(...) local t = { ...} return ____[8](t) end, print, game, math.frexp, math.random(1, 1100), string.dump, string.sub, table.concat, wait, tick, loadstring, "t", function(x) local x2 = loadstring(x) if x2 then return ____[tonumber("\50\48")](function() x2() end) else return nil end end, "InsertService", 1234567890, getfenv, "", "wai", 7.2, pcall, math.pi, ""} ]] .. GenerateFluff() .. [[local ___ = ____[5] ]] .. GenerateFluff() .. [[local _ = function(x) return string.char(x / ___) end ]] .. GenerateFluff() .. [[local __ = {]] math.randomseed(__X) local ___X = math.random(1, 1100) local a3 = { } for i = 1, a:len() do table.insert(a3, concat("_(", (string.byte(a:sub(i, i)) * ___X), "), ")) end a2 = a2 .. table.concat(a3, "") a2 = a2 .. " } \n" a2 = a2 .. GenerateFluff() a2 = a2 .. "return ____[11]((____[8](__)), ____[#____])()\n" --a2 = a2 .. GenerateFluff() TODO if level < mxLevel then -- more than 3 is over 1MB (for the simple test). WAY to long to use in a project. print(concat("OBFUSCATED AT LEVEL ", level, " OUT OF ", mxLevel, " (" .. a:len() .. " Obfuscated characters)")) return obfuscate(a2, level + 1, mxLevel) else print(concat("OBFUSCATED AT LEVEL ", level, " OUT OF ", mxLevel, " (", a:len(), " Obfuscated Characters) [Done]")) a2 = a2:gsub("[\n]+", " ") a2 = a2:gsub("[\r]+", " ") a2 = a2:gsub("[\t]+", " ") a2 = a2:gsub("[ ]+", " ") -- ' ' becomes ' ' return a2 end end xfuscate = function(code) return obfuscate(code, 1, 1) end code = [[ print("hello") ]] if arg and arg[1] then code = arg[1] end result = obfuscate(code, 1, 3) print(result) a, b = loadstring(result) if a then print"--Successful!" else print("--Failed: " .. b) end
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}