Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
破解Lua-将新功能注入内置Lua_Lua - Fatal编程技术网

破解Lua-将新功能注入内置Lua

破解Lua-将新功能注入内置Lua,lua,Lua,我试图通过引入新的内置方法和函数来破解一个游戏(不是为了作弊),以便使用套接字与游戏进行通信。下面是我想要完成的一个小“伪代码”示例: 在Lua代码中,我调用my_hack()并传递当前游戏状态: GameState={} --要传递的游戏状态对象 函数GameState:new() --资料 结束 本地游戏状态=游戏状态:新建() --收集游戏状态数据并将其传递给“我的黑客”。。 我的黑客(游戏状态) 而在my_hack内部,该对象被送走了: int my_hack(lua_State*l)

我试图通过引入新的内置方法和函数来破解一个游戏(不是为了作弊),以便使用套接字与游戏进行通信。下面是我想要完成的一个小“伪代码”示例:

在Lua代码中,我调用
my_hack()
并传递当前游戏状态:

GameState={}
--要传递的游戏状态对象
函数GameState:new()
--资料
结束
本地游戏状态=游戏状态:新建()
--收集游戏状态数据并将其传递给“我的黑客”。。
我的黑客(游戏状态)
而在my_hack内部,该对象被送走了:

int my_hack(lua_State*l)
{
void*gameState=lua_topointer(l,1);
//发送游戏状态:
套接字->发送数据(游戏状态);
返回0;
}

现在,最大的问题是如何将
my_hack()
引入游戏

我假设,所有内置函数都必须保存在某种查找表中。因为所有的Lua代码都被解释了,像
import
等函数必须是静态可用的,对吗?如果这是正确的,那么它应该“足够”找出此代码所在的位置,以便将我的代码走私到游戏中,从而允许我在Lua脚本中调用
my_hack()

应该有两个选项:第一个选项是构建的Lua嵌入到可执行文件中,并且是完全静态的;第二个选项是从DLL动态加载所有Lua代码


任何对我应该在何处以及如何继续寻找内置函数有一点点线索的人都会遇到这个问题。我用作弊引擎做了一些尝试,但不是很成功。我可以作弊一点,但这不是我想要的。

很抱歉没有提供完整的答案,但是如果你可以提供一个自定义Lua VM并更改标准库,你应该能够更改Lua源代码中的
luaL_openlibs
方法,以提供一个带有
my_hack()的表
内部。

由于Lua解释器通常静态编译到主机可执行文件中,因此可能无法以某种方式修改解释器


我认为最好的办法是找到主机调用的某段Lua代码,并从该文件中使用
dofile
运行您自己的代码。

我不太确定是否理解,但这听起来有点不可能。当时的游戏开发者编写了自己的Lua版本,并将其打包到游戏中。在一个编译好的游戏中,尝试用我自己的LuaVM替换他们的LuaVM听起来相当沉重。