1. ホーム
  2. c#

[解決済み] .NETアセンブリを逆コンパイルから保護するにはどうすればよいですか?

2023-07-12 02:34:33

質問

私がC#を始めたとき、最初に学んだことの1つは、最も重要なことでした。Reflector やその他のツールを使用して、任意の .NET アセンブリを逆コンパイルすることができます。多くの開発者はこの事実を知らず、私が彼らにソース コードを見せると、そのほとんどがショックを受けます。

逆コンパイルからの保護は、まだ難しい課題です。私は、それを行うための高速で簡単かつ安全な方法をまだ探しています。私はコードを難読化したくないので、私のメソッド名は a,b,c といったものになります。Reflectorや他のツールは、私のアプリケーションを.NETアセンブリとして認識できないようにする必要があります。すでにいくつかのツールは知っていますが、非常に高価です。私のアプリケーションを保護する他の方法はありますか?

EDIT。

私の質問の理由は、著作権侵害を防止するためではありません。私は、競合他社が私のコードを読むのを止めたいだけです。彼らがそうすることは分かっていますし、すでにそうしました。彼らは私にさえそう言いました。 私は少し誇大妄想的かもしれませんが、ビジネス上のライバルが私のコードを読むことは良い気分ではありません。

どのように解決するのですか?

心に留めておくべきことのひとつは、ビジネス的に意味のある方法でこれを行いたいということです。そのためには、目標を定義する必要があります。では、具体的にどのような目標があるのでしょうか。

海賊版を防止する?その目標は達成不可能です。ネイティブ コードでさえ、逆コンパイルやクラックが可能です。オンラインで入手できる多数のウェアラズ (Windows や Photoshop などの製品でさえ) は、決意のあるハッカーが常にアクセスできることを証明しています。

海賊版を防ぐことができないのであれば、単にそれを減らすというのはどうでしょうか。これもまた、見当違いです。誰もが利用できるようにするためには、たった 1 人がコードをクラックすればよいのです。毎回、運がよくなければならない。海賊は一度だけ運が良ければいいのです。

私はあなたにそれを置く 利益を最大化することが目的であるべきだ。 あなたは、海賊版を止めることがこの努力に必要だと考えているようですが。そうではありません。利益とは単に収入からコストを引いたものです。

海賊版を止める 増加する コスト . 努力が必要で、それはプロセスのどこかでコストを追加することを意味するので、その側を減らすことができます。 製品を保護することは、収益を上げることにもつながりません。 あなたは海賊たちを見て、彼らが代わりにライセンス料を支払ってくれさえすれば儲かると思うでしょうが、現実はこうでしょう。 決して ということです。ここには誇張がありますが、一般に、あなたのセキュリティをクラックできない海賊は、クラックできる類似の製品を見つけるか、クラックせずに済ませるかのどちらかです。彼らは 決して 代わりにそれを購入し、したがって、彼らは ではない であり、売上の損失にはなりません。

さらに 製品を実際に確保する を削減します。 収益 . これには2つの理由があります。1つは、アクティベーションやセキュリティに問題があり、そのため再購入しない、あるいはお金を返してもらうことにした顧客の割合が小さいことです。もう1つは、購入する前に実際に海賊版のソフトウェアを試して動作を確認する人の割合が少ないことです。製品の海賊版配布を制限する ( もし をどうにかして成功させることができた場合)、これらの人々があなたの製品を試すことを防ぎ、その結果、彼らは決して製品を購入することはないでしょう。さらに、海賊版は、製品がより多くの人々に広まるのを助け、その結果、その製品にお金を払うことを望むより多くの人々に到達することができるのです。

より良い戦略は、製品が海賊版であることを想定し、その状況を利用する方法を考えることです。このトピックについて、さらにいくつかのリンクを紹介します。

自分のコードが盗まれるのを防ぐにはどうしたらいいですか?

.NETアプリケーションのセキュリティ