0

我正在尝试对 glua 进行反混淆(Garry 的模式 lua),但由于没有程序(据我所知)对 glua 进行反混淆,因此失败了。这是代码的样子: 菜单.lua

LuaCmd.lua

如果有人能指出我的方向或帮助,那将很有帮助。太感谢了。

4

1 回答 1

0

在开始时,脚本将一个带有不间断字符的变量声明为全局表,以混淆试图阅读脚本的人。

包含“\(numbers)”的字符串是被解析为常规字符的字符代码。例子:

> string.byte("h")
104
> "\104\104\104"
"hhh"

随着脚本的继续,它会不断用 x 数量的不间断字符声明变量和函数,这也会让您在尝试阅读脚本时更加困惑。如果您用 Notepad++ 之类的程序(这里有一个提示:打开“查看所有字符”)用随机字母(让我们使用 A)替换非中断字符,您会看到类似这些行的内容(添加换行符是为了便于阅读目的):

local A = _G
local AA = A[something]
local AAA = A[something else]
local function AAAA(params)
    -- code here
end
-- some other code here
AAAA(something, something)
AAA[something](something, something)

这些只是关于如何使代码更具可读性的一些技巧。在内部,函数可能会使用更多的混淆来额外混淆那些通过不间断字符和其他“障碍”的人。

大多数混淆脚本都是基本的“将字符转换为 \character 代码并加载/运行字符串或使用 HTTP 获取请求并运行代码”,可以很容易地去混淆。使用这样的代码,您将不得不花费更多时间来获得可以阅读和理解的内容。

这是一个代码片段,它以与您的代码片段被混淆的类似方式进行混淆。做上面建议的事情会导致:

local A = _G
local AA = A['string']
local AAA = A['bit']['bxor']
local function AAAAAAA(AAAA)
    return AAAA
end

这只是一个脚本,它声明了几个局部变量,然后声明了一个返回第一个参数的局部函数。

当然,这可以进一步简化,但如果你愿意,你可以给每个变量不同的名称,这将使其更具可读性。

于 2019-06-21T01:58:39.820 回答