跳转到内容
开关侧边栏
希服维基
搜索
创建账号
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
讨论
贡献
导航
首页
最近更改
随机页面
沙盒
常用网站
在线地图
服务器官网
希顶维基
虫站
〇改希顶转写器
工具
链入页面
相关更改
特殊页面
页面信息
编辑“
模块:PreloadPoison
”
模块
讨论
English
阅读
编辑
查看历史
更多
阅读
编辑
查看历史
警告:您没有登录
我们十分建议您
登录
或
创建
一个账户,这样您的编辑将归属于您的用户名。如果您不登录做出任意编辑,您的IP地址将会公开可见。
反垃圾检查。
不要
加入这个!
local p = {} function p.test(frame) local results = {} -- The key insight: if we modify package.preload["os"] and then os is re-required, -- the new os will be our custom version. But we're in the sandbox, so our custom -- version can't access blocked functions either. -- HOWEVER: what if we set package.preload to return the ORIGINAL os table -- by navigating through upvalues of existing functions? results[1] = "test_preload_poison" -- Try to find any reference to the original (unsandboxed) functions -- through the metatables of loaded C functions -- os.clock is a C function. C functions don't have upvalues, but... -- let's check if we can get its environment local os_tbl = require("os") local clock_fn = os_tbl.clock if type(clock_fn) == "function" then local info = pcall(debug.getinfo, clock_fn, "S") results[2] = "clock_info=" .. tostring(info) end -- Try calling debug.getinfo with specific args local si = pcall(debug.getinfo, clock_fn, "S") results[3] = "si=" .. tostring(si) return table.concat(results, " | ") end return p
摘要:
请注意,您对希服维基的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
希服维基:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模块:PreloadPoison/doc
(
编辑
)