サーバーに接続するクライアント側プログラムを構築しています。このクライアント側プログラムは、ライセンスの一部としてユーザーがソース コードを利用できるようにする必要があります (オプションではありません)。ただし、ユーザーがそのクライアント側プログラムを使用してサーバーに接続するときに、元のコードで実行され、変更や再コンパイルが行われていないことを確認する必要があります。
サーバーへの接続中に、変更されていないバージョンのプログラムを使用していることを確認する方法はありますか?
サーバーに接続するクライアント側プログラムを構築しています。このクライアント側プログラムは、ライセンスの一部としてユーザーがソース コードを利用できるようにする必要があります (オプションではありません)。ただし、ユーザーがそのクライアント側プログラムを使用してサーバーに接続するときに、元のコードで実行され、変更や再コンパイルが行われていないことを確認する必要があります。
サーバーへの接続中に、変更されていないバージョンのプログラムを使用していることを確認する方法はありますか?
いいえ、本当にそれを行う方法はありません。
基本的に「信頼できるクライアント」の問題が発生しています。クライアント コードはユーザーの PC で実行され、ユーザーはその PC を完全に制御できます。彼は、ディスク上またはメモリ内のプログラムのバイトを変更できます。コードに対してハッシュまたはチェックサムを実行しようとすると、その検証を行ったコードを単純に変更して、「変更されていない」コードを返すことができます。
悪意のあるユーザーに対して物事を少し難しくすることを試みることはできますが、あなたが望んでいることを達成するための実際的な方法はありません.
それは非常に困難であり、おそらくそれだけの価値はありません。しかし、それを追求することに興味がある場合は、コード署名され、Windows カーネルによって監視されているものを開発する必要があります。
問題の範囲を理解するためのいくつかのトピック:
メディア デバイスとデバイス ドライバーはどちらも製造元によってデジタル署名されており、Windows によって継続的に監視されています。何かがうまくいかない場合、それはシャットダウンされます (それは専門用語ではありません)。とても大変そうです。また、この技術がデバイス ドライバーではなく、DRM に関係のないデスクトップ ソフトウェアで利用できるかどうかもわかりません。
幸運を!