测试Lua字节码的完整性

时间:2016-02-04 19:21:37

标签: lua bytecode

我的几个朋友和我运行的游戏允许使用Lua编写脚本。这是通过LuaJ实现的,LuaJ是一个实现Lua语言的java程序。我最近学习了原生Lua有一个字节码操作的问题,你可以在其中更改字节码的各个部分并使用loadstring运行它来访问通常在函数范围之外的变量和环境,甚至到访问Lu中写入函数的函数。 。这可能会对我们的游戏造成危险,所以我试图说服我的朋友我们需要禁用loadtring然而他们说因为我们使用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调用指令传统上在堆栈顶部完成。但是,通过字节码操作,它可以在堆栈的中间完成,然后在调用完成后,被调用函数使用的任何本地都将保留在堆栈的顶部。

0 个答案:

没有答案