我正在制作一个游戏,每个玩家都必须编写自己的机器人程序。关键思想是,玩家将用C(或C ++或任何兼容的语言)编写程序,构建一个DLL并将其发送到服务器,以便没有人可以获取他的代码。问题是:如何确保他不调用任何非法函数?例如创建文件或打开套接字。 DLL将使用LoadLibrary加载,并调用一个函数。所有交互都将通过回调函数进行。可能的解决方案是放置一个空的kernel32.dll(和其他文件),以使所有winapi调用失败。这样安全吗?在所有情况下都有效吗?有更好的方法吗?
请注意,玩家线程(调用dll的线程)仍然必须能够与游戏通信,可能是通过打开套接字。在Linux上,这可以通过
请注意,玩家线程(调用dll的线程)仍然必须能够与游戏通信,可能是通过打开套接字。在Linux上,这可以通过
seccomp
轻松完成。