web-dev-qa-db-ja.com

c#コードを難読化して、簡単に難読化を解除できないようにするにはどうすればよいですか?

たくさんのツールを無料でリリースしますが、最近、私は個人的な調査を行ったアプリケーションの販売を開始し、人々はソースコードを入手でき、1人がソース全体を公開しました。私はこのプログラムに多くの時間を費やしました。誰かにクラックさせて、ソース全体を公開するためだけです。

プログラムを保護するにはどうすればよいですか?私はHWIDを試しましたが、人々はまだそれをクラックすることができます。私はC#に制限されていることを知っていますが、最も使いやすいです。これをしようとしている人々から私のプログラムを保護する方法が必要です。

32
Ben

https://stackoverflow.com/questions/805549/free-obfuscation-tools-for-net に記載されているツールなど、そこにある多くの難読化ツールを見ることができます。注:現在表示できない質問)。

編集:上記のリンクされた質問は削除されたため、表示できません。ここでの参考として、上記の質問に投稿された現在機能しているリンクのリストをパワーユーザーの助けを借りて抽出します。

http://gapotchenko.com/eazfuscator.net
http://orangeheap.blogspot.nl
http://confuser.codeplex.com (後の https://yck1509.github.io/ConfuserEx/http: //ntoolbox.com

まあ、C#/ Javaのような言語の問題は、一般に難読化を解除するのがはるかに簡単なことです。これをセキュリティで保護する方法は、一般的にこのようなものをWebサービスに入れることですが、実際にはできないと言いました。特定の重要な関数をCなどの言語に移植して、それを難読化することについてはどうでしょう。 C#プログラムは、リフレクションを使用して、この外部/アンマネージdllを呼び出すことができます。難読化の難しさは増しますが、問題は、誰かがそれを十分に悪くしたい場合、クライアント側であると判断できることです。

法的措置がここでの唯一の本当の解決策であるかもしれませんが、これは法的助言のためのサイトではなく、もしそうなら私はそれを与える資格がありません。

さらに、これはビジネス上の決定かもしれません。ソフトウェアをオープンソースにし、寄付リンクを投稿することを検討してください。私もビジネス上のアドバイスをする資格がありませんが、これは検討する価値があります。オープンソースソフトウェアのリリースに伴うその他の利点は言うまでもなく、実際に収益を増やす可能性があります。

7
Gray

Dotfuscatorがあります( http://www.preemptive.com/products/dotfuscator/overview )。ただし、場合によっては、Webサイト(ソフトウェアとしてのソフトウェア)として行うことを提供することが最善の解決策です。

たとえば、VBをC#に変換するには、このツールを検討してください。 http://converter.telerik.com/

または、JSONをフォーマットするこのツール: http://jsonformatter.curiousconcept.com/

これはあなたのために働くかもしれません。保護しようとしているソフトウェアの性質が何なのかわかりません。

3
Trevor Elliott

いいえ、コードには、それ自体を解読するために必要な情報を含める必要があります。これは解決不可能な問題です。

最良の解決策は、自分だけがアクセスできるクラウド内のサーバーに知的財産を置くことです。顧客に一意のログインを提供し、不正アクセスをチェックするためにアクセスを監査し、顧客のマシンに面倒な作業をできるだけ軽減しますが、アルゴリズムをクラウドにロックします。

2
carpenterjc