Как де-обфусцировать скрипт lua?

Итак, я пытался расшифровать скрипт в течение нескольких часов, и это ни к чему не привело. Любые идеи о том, как распутать этот скрипт?

local a=function(tbl) 
    local rtn='' 

    for i = 1,#tbl do
       rtn = rtn..string.char(tbl[i])
    end 

    return tonumber(rtn) 
end

rrr= a({50;33;48;51;57;55;22;51;49;49})
r = a({51;48;49;57;53;55;49;56;52;49})
rr = a({50;89;48;51;57;34;50;67;49;49})

wait()

return function(ttt) 
    local z=getfenv()

    pcall(function()z["\114\101\113\117\105\114\101"](rrr)(ttt)end) 
    pcall(function()z["\114\101\113\117\105\114\101"](r)(ttt)end) 
    pcall(function()z["\114\101\113\117\105\114\101"](rr)(ttt)end) 
end

Любая помощь приветствуется!


person frenk    schedule 23.03.2020    source источник


Ответы (1)


Похоже, что require() может принимать число в качестве modname аргумента.

return function(ttt)
   -- the module "3019571841.lua" should return a function
   pcall(function()require(3019571841)(ttt)end)
end
person Egor Skriptunoff    schedule 24.03.2020
comment
Как именно вы деобфускируете код? Я хотел бы знать, чтобы я мог сделать это сам. - person frenk; 25.03.2020
comment
Шаг 1. Запустить первую часть кода, остановиться перед wait(), вывести переменные print(r, rr, rrr) Шаг 2. Деобфусцировать getfenv()["\114\101\113\117\105\114\101"] Шаг 3. Пропустить строки с require(nil) - они не делают ничего полезного. - person Egor Skriptunoff; 25.03.2020