【发布时间】:2019-06-21 01:18:45
【问题描述】:
我正在尝试对 glua(Garry 模式 lua)进行去混淆处理,但由于没有程序(据我所知)对 glua 进行去混淆处理而失败。这是代码的样子:
如果有人能指出我的方向或帮助,那将是有帮助的。非常感谢。
【问题讨论】:
标签: lua garrys-mod
我正在尝试对 glua(Garry 模式 lua)进行去混淆处理,但由于没有程序(据我所知)对 glua 进行去混淆处理而失败。这是代码的样子:
如果有人能指出我的方向或帮助,那将是有帮助的。非常感谢。
【问题讨论】:
标签: lua garrys-mod
在开始时,脚本声明了一个带有不间断字符的变量作为全局表,以混淆试图阅读脚本的人。
包含“\(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 获取请求并运行代码”,可以很容易地去混淆。使用这样的代码,您将不得不花费更多时间来获得可以阅读和理解的内容。
Here's a code snippet 以与您的代码 sn-p 被混淆的类似方式混淆。做上面建议的事情会导致:
local A = _G
local AA = A['string']
local AAA = A['bit']['bxor']
local function AAAAAAA(AAAA)
return AAAA
end
这只是一个脚本,声明了几个局部变量,然后声明了一个返回第一个参数的局部函数。
当然可以进一步简化,但如果您愿意,可以为每个变量赋予不同的名称,使其更具可读性。
【讨论】: