58

小型で低価格のユーティリティを 1 つリリースする予定です。これはビジネスというよりは趣味であるため、VS2008 に同梱されている Dotfuscator Community Edition を使用する予定でした。

それはどれほど良いですか?

また、「十分に優れた難読化ツール」の定義を使用することもできます。Dotfuscator Community Edition を十分に機能させるには、どの機能が欠けていますか。

編集:

いくつかの商用難読化ツールの価格を調べたところ、かなりの費用がかかりました。その価値はありますか?

商用バージョンは、リバース エンジニアリングからの保護がはるかに優れていますか?

私は自分のアプリケーションがクラックされることをあまり恐れていません (アプリケーションがひどすぎて誰もクラックしようとしないのであれば、がっかりするでしょう)。とにかく、コード内のいくつかの場所での過度に複雑なシリアルキーとライセンスチェックではなく、厳重に保護されているわけではありません. 難読化がなければ、だれかが簡単にソース コードを入手し、それをブランド変更して、独自のものとして販売できることに、私はただうんざりしています。

これはよく起こりますか?

編集2:

誰かが商用の難読化ツールを推奨できますか? 私はそれらの多くを見つけました.それらはすべて高価であり、いくつかはウェブサイトに価格が記載されていません.

機能面では、すべての製品が多かれ少なかれ似ているように見えます。

難読化ツールに必要な最小限の機能セットは何ですか?

4

4 に答える 4

51

一言で言えば、Dotfuscator Community Edition と他の「プロフェッショナル」エディションとの主な違いは、Community Edition は名前空間、メソッド名、およびクラスのその他の「パブリック」アクセス可能な側面のみを実際に難読化して変更することです。関数自体を掘り下げて、関数内の「プライベート」コードを難読化することはありません。

また、Community Edition は、アプリケーション内の制御フローなどを難読化することも、複数のアセンブリのコードを 1 つのアセンブリに "結合" することもありません。これらは、「プロフェッショナル」の有料バージョンで利用できる機能です。

コミュニティ エディション (Visual Studio に付属する「無料」バージョン) と「プロフェッショナル」な有料エディションの最適な比較は、次の 2 つのリンクを参照してください。

プリエンプティブな Dotfuscator エディションの比較

MSDN の Dotfuscator Community Edition 3.0

MSDN のリンクは少し古くなっていますが、Dotfuscator のさまざまなエディションで利用できる実際の機能について、より適切に説明されています。

編集:

商用の難読化ツールには多額の費用がかかりますが、その費用に見合う価値があるのでしょうか? まあ、それは本当にあなただけが下すことができる判断の呼びかけです. 個人的には、あなたのシナリオでは価値がないと思います。1 つ目は、保護したいアプリケーションが 1 つだけであるため (「小規模で低価格のユーティリティを 1 つリリースする予定です」)、2 つ目は、アプリケーションが「クラック」されることをあまり気にしていない (「I.アプリケーションがクラックされることをあまり恐れていません。」)

難読化を行わずにコンパイルされた .NET アプリケーションが元のソース コードに簡単にリバース エンジニアリングされ、誰かがこれを利用してあなたのソフトウェアを盗み、自分のものとして販売する可能性があることを理解しています。ソフトウェアの著作権侵害が存在するという事実は残っており、おそらくそれを止めることはできません。

ソフトウェアの著作権侵害を阻止しようとすることは、ここ (スタック オーバーフロー) とインターネット全体の両方でうんざりして議論されてきました。

一般的なコンセンサスは、十分な時間/お金が与えられた場合、「攻撃者」が「彼がそうすることを防ぐための最善の努力にもかかわらず、とにかくあなたのソフトウェアをクラック/盗む.

これはよく起こりますか?

おそらく、あなたが思っているよりもはるかに少ないと思います。確かに、ソフトウェアはクラックされますが、実際に他人のソース コードを盗み、それを完全にブランド化し直して自分のものとして販売する人はあまり多くないと思います。起きていない、起きていないとは言いませんが、よくあることではないことは確かです。

要約すると、最善の策は、ユーティリティを可能な限り優れたものにすることに集中し、無料の Dotfuscator 難読化ツールを使用することです。明らかな詮索好きな目ですが、誰かがあなたの製品/コードをひどくクラック/盗もうとするなら、彼らはそうするだろうという事実に眠りを失うことはありません.

于 2010-01-08T19:43:36.387 に答える
13

Visual Studio に同梱されている Dotfuscator Community Edition は、非常に単純なソリューションだと思います。シンボルの名前変更のみを提供し、制御フローをまったく難読化しません。また、誰かがあなたのコードを盗むことにした場合、すべての名前をリファクタリングするだけで済みます。これは、少量のクラスでは非常に簡単です。

また、Reflector によって提供される完全ではない逆コンパイルに依存することもできます (通常、switch ブロックを台無しにし、多くの goto を作成し、if-else ブロックの不一致などを行います)。

ただし、Eziriz .NET Reactorを試すことをお勧めします。わずか 179 ドルです (AFAIK の最高の価格/機能比)。シンボルの名前変更、文字列の暗号化、制御フローの難読化などの標準的な難読化手法を提供します。おまけとして、アプリ用のネイティブ ランチャーが作成されます。これには、メイン アセンブリと、暗号化されてオンデマンドで読み込まれるすべてのサード パーティの参照が含まれます。さらに、いくつかのライセンス機能を提供します。

とにかく、.NET アプリケーションを元に戻すことはそれほど難しくありません。私は楽しみのためにそれを行いました。アプリケーションがどれだけ速くクラックまたは元に戻されるかは、時間とお金 (そしてもちろん常識) の問題であると言えます。

于 2010-02-11T09:12:37.073 に答える
9

少なくとも、難読化ツールには次のものが必要です。

  1. 文字列の暗号化
  2. シンボルの名前変更
  3. 制御フローの難読化

あると便利な機能は次のとおりです。

  1. リソース保護
  2. アセンブリのマージ/埋め込み
  3. 外部メソッド呼び出しの隠蔽
  4. 難読化されたアセンブリに自動署名する機能
  5. サテライト アセンブリのサポート
  6. デッドコードの排除
  7. メタデータ削減
  8. アンチデコンパイラ (Reflector)
  9. 改ざん防止
  10. アンチデバッグ

これらすべてをサポートするCrypto Obfuscator製品をご覧ください。

于 2010-05-18T05:34:31.483 に答える
5

リバース エンジニアリング コードを回避するもう 1 つの方法は、サポートを追加する難読化ツールを実際に購入する余裕がない場合に、dll を配置することです。また、展開前のアセンブリで、リバース エンジニアリングを妨げる古い慣行であったアセンブリを探す場所をコンパイラに伝えます。しかし、すでに述べたように、主に優れた製品と優れたコーディング手法の開発に専念すれば、将来的に優れた難読化アプリケーションを手に入れることができます。また、他の人があなたのコードを解読することをあまり心配しないようにしてください。コードを解読するほとんどのハッカーは、製品にお金を払わずに製品を使用する方法を見つけるだけであり、コードを盗んだり、初心者のプログラマーから学ぶことはありません. ええ、JIT が c# と vb.net のみをサポートしていれば、リバース エンジニアリングが大幅に削減されますが、jit は . ネットは本当に言語に優しいので、それが代償です。ですから、コーディングしてお金を稼ぎ、追加の証券を購入してください。

于 2010-06-11T03:09:31.567 に答える