Dotfuscator Community Edition はどの程度優れていますか?「十分に優れた難読化ツール」とは何ですか?[閉まっている]

StackOverflow https://stackoverflow.com/questions/2030136

質問

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

どれくらい良いですか?

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

編集:

商用難読化ツールの数に応じて価格を調べてみたところ、高額な費用がかかりました。その価値はありますか?

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

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

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

編集2:

誰かが商用難読化ツールを推奨できますか。たくさん見つけましたが、どれも高価で、Web サイトに価格が記載されていないものもあります。

機能的には、どの製品も多かれ少なかれ似ているように見えます。

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

役に立ちましたか?

解決

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

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

Community Edition (Visual Studio に付属の「無料」バージョン) と有料の「プロフェッショナル」エディションの最も適切な比較は、次の 2 つのリンクを参照するとわかります。

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

MSDN の Dotfuscator Community Edition 3.0

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

編集:

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

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

ソフトウェアの著作権侵害を阻止する試みは、ここ (Stack Overflow) とインターネット全体の両方でうんざりするほど議論されています。

一般的なコンセンサスは、十分な時間や資金があれば「攻撃者」が攻撃できるものを保護することに同じ時間を費やすのではなく、製品をできる限り優れたものにすることに時間とエネルギーを集中する必要がある、ということのようです。クラック」/ソフトウェアを盗むのを防ぐための最善の努力にもかかわらず、とにかく。

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

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

要約すると、最善の策は、ユーティリティをできる限り優れたものにすることに集中し、無料の Dotfuscator 難読化ツールを使用することです。これには、時間と資金の投資がほとんど必要ないため、コードを難読化することができます。明らかに詮索好きな目ですが、誰かがあなたの製品やコードをひどくクラックしたり盗もうとした場合、彼らはそうするだろうという事実を忘れないでください。

他のヒント

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

また、Reflector が提供するそれほど完璧ではない逆コンパイルを利用することもできます (これは通常、switch ブロックを混乱させ、多数の goto を実行し、if-else ブロックの不一致などを引き起こします)。

でも試してみることをお勧めします エジリズ .NET リアクター. 。価格はわずか 179 ドルです (私の知る限り、価格と機能の比率は最高です)。シンボルの名前変更、文字列暗号化、制御フロー難読化などの標準的な難読化技術を提供します。良いボーナスとして、アプリのネイティブ ランチャーが作成されます。これには、メイン アセンブリとすべてのサードパーティ参照が暗号化され、オンデマンドで読み込まれます。さらに、いくつかのライセンス機能も提供します。

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

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

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

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

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

私たちのものを見てください 暗号難読化ツール これらをすべてサポートする製品です。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top