あんかたが正しい。実際にできることは、その人がソフトウェアをリバース エンジニアリングするのをより困難にする (そしてコストを高くする) ことだけです。
私の会社では、リバース エンジニアリングを可能な限り困難にしたいいくつかの領域を特定しました。たとえば、ファイルはバイナリ形式であり、階層内の各オブジェクトがそれ自体を保存し、正しいバージョンを読み戻す役割を果たします。これは、人が私たちのファイルを読むために作成したコードで階層全体を複製することを意味します。さらに、ジョブ ファイル内の情報の多くは、ショップ標準ファイル内の対応するビットがなくても役立ちます。そのため、ジョブ ファイルの内容を理解するために、作業を 2 回行う必要があります。
Win32DLL には、いくつかの重要な領域 (ドングル保護、金属切断機との通信) があります。つまり、ソフトウェアをリバース エンジニアリングするために、アセンブリと、他の DLL シグネチャを複製する DLL の作成方法を知っている必要があります。さらに、当社の CAM ソフトウェアを使用した設計は、切断機との対話性が高いことです (情報は常に交換されています)。
競合他社が私たちの機械だけで対処しようとしているという話を数回聞いたときから、彼らは仕事を終わらせるために電子機器を自社のものに交換することになりました. これを行うための大金。
私たちが取ったステップの一部は、競合他社のマシンとソフトウェアに対処しようとした私たち自身の経験に基づいていました. 私たちはその経験を生かし、セットアップを微調整する方法を学びました。もちろん、リバース エンジニアリングを打破するためだけに信頼性やメンテナンスを犠牲にするつもりはないという点で限界があります。
あなたの場合、あなたのソフトウェアのどの部分が競合他社の関心を引くかを自問し、そこから先に進む必要があります。あなたが垂直市場の開発者 (機械制御、専門会計など) である場合は、ソフトウェア制御に USB ドングルを使用することをお勧めします。
それ以外の場合は、シリアル番号システムを使用して、人々があなたのソフトウェアを海賊版にし、それをビジネス モデルに組み込むことを受け入れてください。シリアル番号スキームの目的は、比較的邪魔にならず、因果的なコピーを妨げ、コピーがどこから来たのかを追跡するリモートの機会を与えることです。