私は、各プレイヤーが自分のボットをプログラムしなければならないゲームを構築しています。重要なアイデアは、プレーヤーがC(またはC ++、または互換性のある言語)でプログラムし、DLLを作成し、このDLLをサーバーに送信して、誰も自分のコードを取得できないようにすることです。問題は、彼が違法な関数を呼び出していないことを確認する方法です。ファイルを作成したり、ソケットを開いたりするようなものです。DLLがLoadLibraryとともにロードされ、関数が呼び出されます。すべての相互作用はコールバック関数で発生します。考えられる解決策は、空のkernel32.dll(およびその他)を配置して、すべてのwinapi呼び出しが失敗するようにすることです。これは安全で、すべてのケースで機能しますか?それを行うためのより良い方法はありますか?
プレーヤースレッド(dllと呼ばれるもの)は、おそらくオープンソケットを使用して、ゲームと通信できる必要があることに注意してください。Linuxでは、これはで簡単に実行できますseccomp
。