测试Lua字节码完整性

我和我的几个朋友经营着一款允许使用Lua脚本的游戏。这是通过LuaJ实现的,它是实现Lua语言的Java程序。我最近了解到原生Lua存在字节码操纵的问题,可以通过更改字节码的一部分并使用loadstring运行它,以访问函数范围之外的变量和环境,甚至到访问Lua所编写的C函数。对于我们的游戏,这可能会带来危险,因此我试图说服我的朋友们我们需要禁用loadstring,但他们说既然我们使用的是LuaJ而不是Lua,那么我们的版本中不存在这个漏洞。我不喜欢假设某些东西不能被打破,因为它与其他可能被打破的东西不同。在这里,有没有人知道如何设置一些针对LuaJ字节码的渗透测试,并查看它是否像原生Lua一样容易受到攻击?以下是一个几乎袭击ROBLOX游戏的类似黑客的链接。他们的系统是基于原生Lua而不是LuaJ编写的。

http://www.corsix.org/content/lua-514-bug-recap

http://www.corsix.org/lua/bytecode_abuse_0_1.lua

我最担心的是游戏中的一次字节码操纵,就像在顶部链接中演示的那样

访问其他函数的本地变量

VM调用指令通常在堆栈的顶部执行。但是,通过字节码操作,它可以在堆栈中间执行,然后在调用完成后,被调用函数使用的任何本地变量都将留在堆栈的顶部。

点赞