哪些Roblox/Luau类可隐藏恶意脚本?可执行与不可存储类分别有哪些?
Roblox Studio 恶意脚本排查指南
核心问题解答
1. 哪些Roblox/Luau类可隐藏恶意脚本
- 所有支持嵌套子对象的
Instance子类均可被用于藏匿恶意脚本,高频被利用的类包括:Weld、WeldConstraint、Folder、ThumbnailCamera、Model无名嵌套容器、StringValue/BoolValue等存储类、粒子发射器的父级容器 - 恶意脚本通常会被篡改
ClassName属性伪装成上述非脚本类,常规层级浏览几乎无法发现
2. 哪些类内的脚本仍可被正常执行
- 只要实例本质是
Script、LocalScript、ModuleScript三类中的一种,无论被伪装成什么其他类名,只要位于合法执行上下文就会正常运行:Script放在Workspace、ServerScriptService路径下可执行LocalScript放在StarterPlayerScripts、StarterPack、PlayerGui等客户端上下文路径下可执行ModuleScript只要被上述两类脚本调用就会触发执行,无固定路径限制
3. 哪些类无法存储恶意脚本,Audio类是否属于后者
- 仅不支持附加子对象的基础实例类无法存储恶意脚本,包括
Terrain、未开启子实例附加权限的MeshPart、Texture、Decal等 - Audio类属于无法存储恶意脚本的类别,Audio实例仅能存储音频资源ID,本身不支持挂载或匿藏脚本实例
排查优化建议
- 关键词搜索扩容:除现有搜索的
getfenv、string.reverse、require、eriuqer、teleport之外,补充搜索setfenv、loadstring、gethiddenproperty、sethiddenproperty、TeleportService、MarketplaceService相关调用,以及十六进制转义字符串特征 - 无遗漏脚本遍历:在Studio控制台运行以下命令直接输出所有真实脚本实例,不受类名伪装干扰:
for _, instance in ipairs(game:GetDescendants()) do if instance:IsA("LuaSourceContainer") then print(instance:GetFullName(), instance.ClassName) end end - 序列化文件校验:第三方资产导入后右键选择「保存到文件」导出为rbxlx格式,用文本编辑器打开直接搜索
Script、LocalScript关键词,所有脚本无论伪装手段如何都会在序列化文本中暴露真实类型 - 插件组合使用:先用Guardian Angel Defender做全量扫描,手动排除空对象误报,再用Ro-Protect做二次校验,将你项目内的合法自定义对象加入白名单可大幅降低误报率
内容的提问来源于stack exchange,提问作者GAM II
相关产品推荐
相关产品推荐

