跳转到内容
开关侧边栏
希服维基
搜索
创建账号
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
讨论
贡献
导航
首页
最近更改
随机页面
沙盒
常用网站
在线地图
服务器官网
希顶维基
虫站
〇改希顶转写器
工具
链入页面
相关更改
特殊页面
页面信息
编辑“
模块:Deep2 MetaEscape
”
模块
讨论
English
阅读
编辑
查看历史
更多
阅读
编辑
查看历史
警告:您没有登录
我们十分建议您
登录
或
创建
一个账户,这样您的编辑将归属于您的用户名。如果您不登录做出任意编辑,您的IP地址将会公开可见。
反垃圾检查。
不要
加入这个!
local p = {} function p.test() -- Try to use __gc finalizer in a userdata to escape local results = {} -- Method 1: Metatable chain traversal local current = _G local depth = 0 while depth < 10 do local mt = getmetatable(current) if not mt then break end depth = depth + 1 local keys = {} for k in pairs(mt) do keys[#keys+1] = k end results[depth] = "level" .. depth .. "=" .. table.concat(keys, ",") if mt.__index then current = mt.__index else break end end results[#results+1] = "depth=" .. depth -- Method 2: Try to set __gc on a table local t = {} local ok, err = pcall(setmetatable, t, {__gc = function() end}) results[#results+1] = "set_gc_table=" .. tostring(ok) .. ":" .. tostring(err) -- Method 3: Try to access function environments local custom_funcs = {} for name in pairs({"log", "addWarning", "executeFunction", "loadData", "getCurrentFrame"}) do if mw[name] and type(mw[name]) == "function" then local ok, info = pcall(debug.getinfo, mw[name], "S") if ok and info then custom_funcs[#custom_funcs+1] = name .. ":src=" .. tostring(info.short_src):sub(1,50) end end end if #custom_funcs > 0 then results[#results+1] = "func_sources: " .. table.concat(custom_funcs, " | ") end return table.concat(results, " | ") end return p
摘要:
请注意,您对希服维基的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
希服维基:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模块:Deep2 MetaEscape/doc
(
编辑
)