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