是否可以对经过混淆的Lua代码字符串进行模糊处理?

问题描述 投票:1回答:1

我有一个(另一个)混淆的lua代码字符串。我想知道是否有可能对它进行模糊处理,或者弄清楚它是如何被模糊处理的,因为我以前从未遇到过类似的东西。该代码字符串被认为是恶意服务器端脚本执行程序的主要模块。了解其中的内容将帮助我们在平台上修补漏洞。有人告诉我,通过获取常量很容易破译,因为它是基于VM的模糊处理,我们只需要一点帮助就可以将其指向正确的方向。

代码相当大,所以它在此pastebin中。

pastebin com / dtfzBPZk

lua obfuscation deobfuscation
1个回答
0
投票

对这个文件进行模糊处理看起来似乎是一个手动操作。像往常一样,首先要做的是将变量重命名为更合理的名称,并在代码中添加空格和缩进。您可以在https://pastebin.com/eRTGAbTH看到一个开始。完成此操作后,您将看到如下所示的功能模式:

(function(...)
    local SynapseXen_116 = "hi xen doesn't work on sk8r please help"
    local SynapseXen_092 = SynapseXen_100(38909278, 3932326132)
    local SynapseXen_069 = {...}
    for SynapseXen_109, SynapseXen_043 in pairs(
        SynapseXen_069
    ) do
        local SynapseXen_119
        local SynapseXen_097 = type(SynapseXen_043)
        if SynapseXen_097 == "number" then
            SynapseXen_119 = SynapseXen_043
        elseif SynapseXen_097 == "string" then
            SynapseXen_119 = SynapseXen_043:len()
        elseif SynapseXen_097 == "table" then
            SynapseXen_119 = SynapseXen_100(4264903821, 30110892)
        end
        SynapseXen_092 = SynapseXen_092 + SynapseXen_119
    end
    SynapseXen_140[1171393165] =
        SynapseXen_bit_bxor(
        SynapseXen_bit_bxor(2179831066, SynapseXen_092),
        SynapseXen_bit_bxor(2132161653, SynapseXen_082)
    ) -
        string.len(SynapseXen_116) -
        SynapseXen_139 -
        #{
            2716917292,
            2960928816,
            2092744992,
            3945961999,
            2156388474,
            2523828292,
            534526172
        }
    return SynapseXen_140[1171393165]
end)({}, {}, 14275, 107, "iIIllIIlIIilillilI", "i", 5327, 3211, 14382, 14643)

现在您可以开始消除红色鲱鱼了。例如,任何时候看到#{ a bunch of stuff in here },您都可以对列表中的元素进行计数,然后将整个内容替换为计数。在这种情况下,末尾会有一个我们可以用数字7代替。接下来,看SynapseXen_116。它唯一使用的地方就是它的长度,因此您也可以用它代替。现在,在那之后,请注意,这是在声明一个函数,然后立即调用它,因此您可以替换其参数。继续沿着那条路走,直到您发现Lua-in-Lua VM的核心为止,从那里开始,应该很容易在最后插入Base64,并查看它解码的字节码。

© www.soinside.com 2019 - 2024. All rights reserved.