diff --git a/.gitignore b/.gitignore index 4c847b3..5e685e8 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ build # Ignore Local Test Files test.lua -test.obfuscated.lua \ No newline at end of file +test.obfuscated.lua +config.lua \ No newline at end of file diff --git a/src/config.lua b/src/config.lua index e9179c4..628453e 100644 --- a/src/config.lua +++ b/src/config.lua @@ -3,9 +3,7 @@ -- config.lua -- -- In this Script, some Global config Variables are defined --- These may be changed --- You are not allowed to change the following Variables local NAME = "Prometheus"; local REVISION = "Alpha"; local VERSION = "v0.2"; @@ -29,7 +27,6 @@ return { NameAndVersion = string.format("%s %s", NAME, VERSION), Version = VERSION; Revision = REVISION; - Watermark = string.format("Obfuscated using %s %s %s by %s", NAME, REVISION, VERSION, BY); -- You are not allowed to edit the watermark -- Config Starts Here IdentPrefix = "__prometheus_"; -- The Prefix used for Identifiers generated by PROMETHEUS. NOTE: There should be no identifiers in the script to be obfuscated starting with that prefix, because that can lead to weird bugs diff --git a/src/prometheus/ast.lua b/src/prometheus/ast.lua index a92085b..2229ae8 100644 --- a/src/prometheus/ast.lua +++ b/src/prometheus/ast.lua @@ -627,7 +627,7 @@ function Ast.MulExpression(lhs, rhs, simplify) end function Ast.DivExpression(lhs, rhs, simplify) - if(simplify and rhs.isConstant and lhs.isConstant) then + if(simplify and rhs.isConstant and lhs.isConstant and rhs.value ~= 0) then local success, val = pcall(function() return lhs.value / rhs.value end); if success then return Ast.ConstantNode(val); diff --git a/src/prometheus/compiler/compiler.lua b/src/prometheus/compiler/compiler.lua index eebb353..e13a939 100644 --- a/src/prometheus/compiler/compiler.lua +++ b/src/prometheus/compiler/compiler.lua @@ -1277,7 +1277,7 @@ function Compiler:compileStatement(statement, funcDepth) self:addStatement(self:setRegister(scope, tmpReg, Ast.IndexExpression(self:register(scope, baseReg), self:register(scope, tmpReg))), {tmpReg}, {tmpReg, baseReg}, false); self:addStatement(self:setRegister(scope, tmpReg, Ast.FunctionCallExpression(self:register(scope, tmpReg), args)), {tmpReg}, {tmpReg, unpack(regs)}, true); - self:freeRegister(baseReg, false); + self:freeRegister(tmpReg, false); for i, reg in ipairs(regs) do self:freeRegister(reg, false); @@ -2004,9 +2004,6 @@ function Compiler:compileExpression(expression, funcDepth, numReturns) end end - - - self:freeRegister(baseReg, false); for i, reg in ipairs(regs) do self:freeRegister(reg, false); @@ -2052,9 +2049,9 @@ function Compiler:compileExpression(expression, funcDepth, numReturns) self:addStatement(self:setRegister(scope, tmpReg, Ast.IndexExpression(self:register(scope, baseReg), self:register(scope, tmpReg))), {tmpReg}, {baseReg, tmpReg}, false); if returnAll then - self:addStatement(self:setRegister(scope, retRegs[1], Ast.TableConstructorExpression{Ast.TableEntry(Ast.FunctionCallExpression(self:register(scope, tmpReg), args))}), {retRegs[1]}, {baseReg, unpack(regs)}, true); + self:addStatement(self:setRegister(scope, retRegs[1], Ast.TableConstructorExpression{Ast.TableEntry(Ast.FunctionCallExpression(self:register(scope, tmpReg), args))}), {retRegs[1]}, {tmpReg, unpack(regs)}, true); else - self:addStatement(self:setRegister(scope, tmpReg, Ast.TableConstructorExpression{Ast.TableEntry(Ast.FunctionCallExpression(self:register(scope, tmpReg), args))}), {tmpReg}, {baseReg, unpack(regs)}, true); + self:addStatement(self:setRegister(scope, tmpReg, Ast.TableConstructorExpression{Ast.TableEntry(Ast.FunctionCallExpression(self:register(scope, tmpReg), args))}), {tmpReg}, {tmpReg, unpack(regs)}, true); for i, reg in ipairs(retRegs) do self:addStatement(self:setRegister(scope, reg, Ast.IndexExpression(self:register(scope, tmpReg), Ast.NumberExpression(i))), {reg}, {tmpReg}, false); @@ -2071,7 +2068,6 @@ function Compiler:compileExpression(expression, funcDepth, numReturns) self:addStatement(self:setRegister(scope, retRegs[1], Ast.FunctionCallExpression(self:register(scope, tmpReg), args)), {retRegs[1]}, {baseReg, unpack(regs)}, true); end - self:freeRegister(baseReg, false); for i, reg in ipairs(regs) do self:freeRegister(reg, false); end diff --git a/src/prometheus/pipeline.lua b/src/prometheus/pipeline.lua index 1ab416c..b896b79 100644 --- a/src/prometheus/pipeline.lua +++ b/src/prometheus/pipeline.lua @@ -201,8 +201,6 @@ function Pipeline:apply(code, filename) logger:info(string.format("Generated Code size is %.2f%% of the Source Code size", (string.len(code) / sourceLen)*100)) - code = "--[[\n " .. config.Watermark .. "\n]]\n" .. code; - return code; end diff --git a/src/prometheus/steps/AntiTamper.lua b/src/prometheus/steps/AntiTamper.lua index 2c61d65..ba58423 100644 --- a/src/prometheus/steps/AntiTamper.lua +++ b/src/prometheus/steps/AntiTamper.lua @@ -165,8 +165,6 @@ end repeat until valid; ]] - print(code); - local parsed = Parser:new({LuaVersion = Enums.LuaVersion.Lua51}):parse(code); local doStat = parsed.body.statements[1]; doStat.body.scope:setParent(ast.body.scope);