7

MATLAB でコンパイルされた .exe を以下から保護する方法:

  • リバースエンジニアリング
  • 無断配布?

どのパッカー、保護ツールなどを使用すればよいですか?

4

2 に答える 2

5

私は以前、まさにこの問題に直面していました。ここにいくつかの考えがあります:

  • MATLAB でコンパイルされたバイナリは、実際には ZIP アーカイブであり、実行時に (おそらくユーザーがアクセスできる一時フォルダーまたはホーム フォルダーに) 解凍されます。
  • ファイル自体は AES を使用して暗号化されますが、理論的にはキーを復元できるため、これは理想的ではありません。
  • exe圧縮解除されたファイルは実行時に利用可能になるため、上記により、再配布を制限するためにユーザーベースのキーで最終版を追加で暗号化することは無意味になります。mccその意味では、単に保護のために使用するのと同じです。
  • 追加のキャッチとして:ディストリビューション内の MEX ファイルは暗号化されていません。MCR_CACHE から mex ファイルを取得して、直接使用できます。同じことが Java クラスにも当てはまります。
  • したがって、実行可能ファイル自体の暗号化に加えて、MATLAB 実行可能ファイルによって実行されるディスクの書き込み/読み取りを暗号化/復号化するソリューションが必要です。
  • 明らかに、暗号化するディスク アクセスを指定できるようにする必要があります。ユーザーが入力データを提供し、その出力を読み取れるようにする必要があります。
  • 理想的には、このソリューションはバイナリの暗号化されたコピーをメモリに保持し、必要な場合、つまりコード/データの一部が実行/アクセスされている場合にのみ復号化します。
  • さらに、ソリューションはコードがデバッガーから実行されたことを検出し、そのような場合にプログラムをシャットダウンする必要があります。
  • 暗号化プロセスをリバース エンジニアリングしてキーを抽出することは困難です。ソフトウェアのみのソリューションでは、キーを取得することは常に可能です (ハードウェア ソリューションよりも簡単です)。

最終的に、USB ドングルを使用するソリューションを使用することになりました。オンザフライで暗号化/復号化を実行し、多かれ少なかれ上記の複雑さに対処します。クライアント/サーバー設定で動作します。つまり、サーバーに USB ドングルを接続すると、クライアントはサーバーに接続してライセンスをチェックアウトし、コードを実行します。ただし、その時点では、完全な暗号化は Windows でのみサポートされていました。ここで SO で会社名を言及する必要があるかどうかはわかりません (私はそれとはまったく関係がありませんが、とにかく)。私たちが何を使用したかを個人的にお話しするか、少しググってみてください - この市場には代替品があります.

編集元のステートメントに誤りがありました。アーカイブは確かに MCR_CACHE ディレクトリに抽出されますが、ファイルは暗号化されています。ただし、これによってコンパイル済みプログラムの再配布が妨げられることはありません。スクリプトは平文では利用できませんが、この意味で知的財産は保護されています。MATLAB 展開ツールが保護するものと保護しないものについての詳細な説明と、スキームのセキュリティに関する簡単な説明は、こちら にあります

于 2012-10-24T08:46:15.787 に答える
0

Taurus と呼ばれる商用ユーティリティがあり、pcoded 形式とコンパイル済み形式の両方で、Matlab アプリのコピーを保護するために使用できます。Taurus は、デスクトップ アプリケーションに見られる典型的なコピー防止スキームを多数ホストしています。http://www.algorithmprotection.com/index.php/component/content/article/34-products/46-taurusをご覧ください。

于 2013-05-02T10:59:44.750 に答える