Skip to content

Commit

Permalink
Merge pull request #57 from levno-710/develop
Browse files Browse the repository at this point in the history
  • Loading branch information
levno-710 committed May 18, 2022
2 parents d6796fd + bf1c1d7 commit 879f190
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 35 deletions.
1 change: 0 additions & 1 deletion doc/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
* [Vmify](steps/vmify.md)
* [SplitStrings](steps/splitstrings.md)
* [ProxifyLocals](steps/proxifylocals.md)
* [LocalsToTable](steps/localstotable.md)
* [EncryptStrings](steps/encryptstrings.md)
* [ConstantArray](steps/constantarray.md)

Expand Down
64 changes: 63 additions & 1 deletion doc/steps/encryptstrings.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,68 @@ print("Hello, World!")
{% code title="out.lua" %}
```lua
-- Settings: None
local x,F do local k=math.floor local I=math.random local Y=table.remove local i=string.char local K=0 local J=2 local Q={}local W={}local q=0 local R={}for F=1,256,1 do R[F]=F end repeat local F=I(1,#R)local x=Y(R,F)W[x]=i(x-1)until#R==0 local j={}local function B()if#j==0 then K=(K*173+8408159861491)%35184372088832 repeat J=(J*160)%257 until J~=1 local F=J%32 local x=(k(K/2^(13-(J-F)/32))%4294967296)/2^F local I=k((x%1)*4294967296)+k(x)local Y=I%65536 local i=(I-Y)/65536 local Q=Y%256 local W=(Y-Q)/256 local q=i%256 local R=(i-q)/256 j={Q,W;q,R}end return table.remove(j)end local d={}x=setmetatable({},{__index=d,__metatable=nil})function F(x,k)local I=d if I[k]then else j={}local F=W K=k%35184372088832 J=k%255+2 local Y=string.len(x)I[k]=""local i=198 for Y=1,Y,1 do i=((string.byte(x,Y)+B())+i)%256 I[k]=I[k]..F[i+1]end end return k end end print(x[F("\219\018Q%~Y\225\128u\128\208&\155",6909832146399)])
local x, F
do
local k = math.floor
local I = math.random
local Y = table.remove
local i = string.char
local K = 0
local J = 2
local Q = {}
local W = {}
local q = 0
local R = {}
for F = 1, 256, 1 do
R[F] = F
end
repeat
local F = I(1, #R)
local x = Y(R, F)
W[x] = i(x - 1)
until #R == 0
local j = {}
local function B()
if #j == 0 then
K = (K * 173 + 8408159861491) % 35184372088832
repeat
J = (J * 160) % 257
until J ~= 1
local F = J % 32
local x = (k(K / 2 ^ (13 - (J - F) / 32)) % 4294967296) / 2 ^ F
local I = k((x % 1) * 4294967296) + k(x)
local Y = I % 65536
local i = (I - Y) / 65536
local Q = Y % 256
local W = (Y - Q) / 256
local q = i % 256
local R = (i - q) / 256
j = {Q, W, q, R}
end
return table.remove(j)
end
local d = {}
x = setmetatable({}, {__index = d, __metatable = nil})
function F(x, k)
local I = d
if I[k] then
else
j = {}
local F = W
K = k % 35184372088832
J = k % 255 + 2
local Y = string.len(x)
I[k] = ""
local i = 198
for Y = 1, Y, 1 do
i = ((string.byte(x, Y) + B()) + i) % 256
I[k] = I[k] .. F[i + 1]
end
end
return k
end
end
print(x[F("\219\018Q%~Y\225\128u\128\208&\155", 6909832146399)])

```
{% endcode %}
33 changes: 0 additions & 33 deletions doc/steps/localstotable.md

This file was deleted.

46 changes: 46 additions & 0 deletions src/prometheus/compiler/compiler.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1308,6 +1308,52 @@ function Compiler:compileStatement(statement, funcDepth)
-- Function Declaration
if(statement.kind == AstKind.FunctionDeclaration) then
local retReg = self:compileFunction(statement, funcDepth);
if(#statement.indices > 0) then
local tblReg;
if statement.scope.isGlobal then
tblReg = self:allocRegister(false);
self:addStatement(self:setRegister(scope, tblReg, Ast.StringExpression(statement.scope:getVariableName(statement.id))), {tblReg}, {}, false);
self:addStatement(self:setRegister(scope, tblReg, Ast.IndexExpression(self:env(scope), self:register(scope, tblReg))), {tblReg}, {tblReg}, true);
else
if self.scopeFunctionDepths[statement.scope] == funcDepth then
if self:isUpvalue(statement.scope, statement.id) then
tblReg = self:allocRegister(false);
local reg = self:getVarRegister(statement.scope, statement.id, funcDepth);
self:addStatement(self:setRegister(scope, tblReg, self:getUpvalueMember(scope, self:register(scope, reg))), {tblReg}, {reg}, true);
else
tblReg = self:getVarRegister(statement.scope, statement.id, funcDepth, retReg);
end
else
tblReg = self:allocRegister(false);
local upvalId = self:getUpvalueId(statement.scope, statement.id);
scope:addReferenceToHigherScope(self.containerFuncScope, self.currentUpvaluesVar);
self:addStatement(self:setRegister(scope, tblReg, self:getUpvalueMember(scope, Ast.IndexExpression(Ast.VariableExpression(self.containerFuncScope, self.currentUpvaluesVar), Ast.NumberExpression(upvalId)))), {tblReg}, {}, true);
end
end

for i = 1, #statement.indices - 1 do
local index = statement.indices[i];
local indexReg = self:compileExpression(Ast.StringExpression(index), funcDepth, 1)[1];
local tblRegOld = tblReg;
tblReg = self:allocRegister(false);
self:addStatement(self:setRegister(scope, tblReg, Ast.IndexExpression(self:register(scope, tblRegOld), self:register(scope, indexReg))), {tblReg}, {tblReg, indexReg}, false);
self:freeRegister(tblRegOld, false);
self:freeRegister(indexReg, false);
end

local index = statement.indices[#statement.indices];
local indexReg = self:compileExpression(Ast.StringExpression(index), funcDepth, 1)[1];
self:addStatement(Ast.AssignmentStatement({
Ast.AssignmentIndexing(self:register(scope, tblReg), self:register(scope, indexReg)),
}, {
self:register(scope, retReg),
}), {}, {tblReg, indexReg, retReg}, true);
self:freeRegister(indexReg, false);
self:freeRegister(tblReg, false);
self:freeRegister(retReg, false);

return;
end
if statement.scope.isGlobal then
local tmpReg = self:allocRegister(false);
self:addStatement(self:setRegister(scope, tmpReg, Ast.StringExpression(statement.scope:getVariableName(statement.id))), {tmpReg}, {}, false);
Expand Down

0 comments on commit 879f190

Please sign in to comment.