lua - 我需要帮助去混淆 gLua 代码,但找不到任何解决方案
问题描述
我正在尝试对 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
这只是一个脚本,它声明了几个局部变量,然后声明了一个返回第一个参数的局部函数。
当然,这可以进一步简化,但如果你愿意,你可以给每个变量不同的名称,这将使其更具可读性。
推荐阅读
- c# - 尽管源/目标尺寸相同,但 DrawImage 会模糊图像
- service-worker - 视频作为背景图像在 iOS 上的 Gatsby PWA 中不起作用
- javascript - JS 替换 - 删除相同的大写规范
- c - InfluxDB 返回错误的时间戳。我不知道为什么
- angular - 将服务注入Angular中的组件时出现问题
- jenkins - Jenkins - 生产和非生产环境的主策略
- php - Symfony 4:不要重定向到 /login 来匹配路由
- javascript - 为什么 djnago 模板中的所有 ' 都转换为 ' ?
- c++ - 程序卡住了,没有打印输出
- php - 不使用日期时如何在 Carbon 中获取时区偏移量?