我正在尝试对 glua 进行反混淆(Garry 的模式 lua),但由于没有程序(据我所知)对 glua 进行反混淆,因此失败了。这是代码的样子:
如果有人能指出我的方向或帮助,那将很有帮助。太感谢了。
在开始时,脚本将一个带有不间断字符的变量声明为全局表,以混淆试图阅读脚本的人。
包含“\(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
这只是一个脚本,它声明了几个局部变量,然后声明了一个返回第一个参数的局部函数。
当然,这可以进一步简化,但如果你愿意,你可以给每个变量不同的名称,这将使其更具可读性。