能否对这个被混淆的 Lua 代码字符串进行反混淆?

我有另一段经过混淆的 lua 代码字符串。我想知道是否可能对其进行反混淆,或者找出它是如何被混淆的,因为我之前从未遇到过类似的东西。这个代码字符串据说是恶意的服务器端脚本执行器的主模块。了解其中的内容将有助于我们修补平台上的漏洞。我被告知,通过获取常量,很容易就能解密,因为它是基于 VM 的混淆,我们只需要在正确的方向上获得一点帮助。

代码相当庞大,因此在这里使用 pastebin。

pastebin com/dtfzBPZk

点赞
用户7509065
用户7509065

Deobfuscating this one looks like it will be a slightly more manual process. As usual, the first things you should do are rename variables to have saner names, and add whitespace and indentation to the code. You can see a start to this at https://pastebin.com/eRTGAbTH. Once you do that, you'll see a pattern of functions like this:

现在,您可以开始消除虚假线索。例如,只要看到#{这里有一堆东西},就可以计算出列表中的元素数量,并将整个列表替换为该数字。在这种情况下,末尾附近有一个这样的替换,我们可以用数字7替换它。接下来,看看SynapseXen_116。它唯一使用的地方是它的长度,因此您可以将其替换为其长度。现在,在那之后,注意到这是声明一个函数,然后立即调用它,因此您可以替换它的参数。继续走下去,直到揭示Lua-in-Lua VM的核心,然后很容易将Base64插入末尾,并查看它解码为哪种字节码。

2020-05-22 06:11:11