165

私の製品には、ASP.NET、Windows Forms App、および Windows Service という複数のコンポーネントがあります。コードの 95% 程度は VB.NET で記述されています。

知的財産上の理由から、コードを難読化する必要があり、これまで 5 年以上経過したバージョンの dotfuscator を使用していました。新しい世代のツールに移行する時が来たと考えています。私が探しているのは、新しい難読化ツールを探すときに考慮すべき要件のリストです。

私がこれまでに探すべきだと知っていること:

  • シリアライゼーション/デシリアライゼーション。私の現在のソリューションでは、クラス データ メンバーを難読化しないようにツールに指示するだけです。これは、以前にシリアル化されたデータを読み込めないという苦痛が大きすぎるためです。
  • ビルド プロセスとの統合
  • ASP.NET での作業。過去に、.dll 名の変更 (ページごとに 1 つあることが多い) が原因で、この問題が発生することがわかりました。これは、すべてのツールが適切に処理できるわけではありません。
4

30 に答える 30

50

私たちは多くの難読化ツールを試しました。リモート処理を使用する大規模なクライアント/サーバー アプリでは、いずれも機能しません。問題は、クライアントとサーバーがいくつかの dll を共有していることですが、それを処理できる難読化ツールが見つかりませんでした。

私たちは、DotFuscator Pro、SmartAssembly、XenoCode、Salamander、およびいくつかの小さなアプリを試しましたが、その名前は私にはわかりませんでした。

率直に言って、難読化は大きなハックだと確信しています。

それが対処する問題でさえ、完全に本当の問題ではありません。本当に保護する必要があるのは、接続文字列、アクティベーション コードなど、セキュリティが重要な要素だけです。別の会社があなたのコードベース全体をリバース エンジニアリングし、そこから競合する製品を作成しようとしているというこのナンセンスは、偏執狂的なマネージャーの悪夢から来るものであり、現実ではありません。

于 2008-08-07T18:15:46.197 に答える
45

.Net 1.1に戻ると、難読化が不可欠でした。コードの逆コンパイルは簡単で、アセンブリからIL、C#コードに移行して、わずかな労力で再度コンパイルすることができました。

現在、.Net 3.5では、まったくわかりません。3.5アセンブリを逆コンパイルしてみてください。あなたが得るものは、コンパイルから長い道のりです。

3.5からの最適化(1.1よりはるかに優れている)と、匿名タイプ、デリゲートなどがリフレクションによって処理される方法を追加します(これらは再コンパイルするのは悪夢です)。ラムダ式、Linq-syntaxやのようなコンパイラ'magic' var、およびのようなC#2関数を追加yieldします(これにより、名前が読み取れない新しいクラスが生成されます)。逆コンパイルされたコードは、コンパイル可能からかなり長い道のりになります。

多くの時間を費やしている専門家チームは、それを再びリバースエンジニアリングすることができますが、難読化されたコードについても同じことが言えます。彼らがそれからどのコードを取得したかは、保守不可能であり、非常にバグがある可能性が非常に高いでしょう。

アセンブリにキー署名することをお勧めします(つまり、ハッカーがアセンブリを再コンパイルできる場合は、すべてを再コンパイルする必要があります)が、難読化する価値はないと思います。

于 2008-08-12T12:19:13.800 に答える
23

無料のものをお探しの場合は、VisualStudioまたはEazfuscator.NETに付属のDotObfuscatorCommunityEditionをお試しください。


2012年6月29日以降、Eazfuscator.NETは商用になりました。利用可能な最後の無料バージョンは3.3です。

于 2008-08-05T16:30:40.170 に答える
18

私はスマートアセンブリを使用しています。基本的に、dll を選択すると、難読化されたものが返されます。うまく機能しているようで、今のところ問題はありません。とても、とても使いやすいです。

于 2008-08-05T16:21:56.223 に答える
10

私は市場に出回っているほぼすべての難読化ツールを試しましたが、SmartAssembly が最高だと思います。

于 2008-08-07T10:44:33.580 に答える
9

私もSmartAssemblyを使用しています。.netアプリケーションでは、Ezrinz.NetReactorの方がはるかに優れていることがわかりました。難読化、Monoのサポート、アセンブリのマージ、および試用版の作成や特定のマシンへのライセンスのリンク(実装が非常に簡単)のための非常に優れたライセンスモジュールもあります。価格も非常に競争力があり、私が必要なときに彼らを迅速にサポートします。 エジリス

明確にするために、私は製品が好きで、会社とはまったく関係のない顧客です。

于 2008-08-22T17:41:21.020 に答える
7

短い答えは、できないということです。

誰かがあなたのコードを読むのを難しくするさまざまなツールがあります - そのうちのいくつかは他の回答で指摘されています。

ただし、これらはすべて読みにくくするだけであり、必要な労力が増えるだけです。多くの場合、これはカジュアルな読者を思いとどまらせるのに十分ですが、あなたのコードを掘り下げようと決心している人はいつでもそうすることができます.

于 2009-07-16T21:45:02.367 に答える
6

Crypto Obfuscatorは、すべての懸念事項とシナリオに対応します。それ :

  1. ルールに基づいて、タイプ/メンバーを難読化から自動的に除外します。シリアル化されたタイプ/フィールドはその1つです。
  2. MSBUildを使用してビルドプロセスに統合できます。
  3. ASP.Netプロジェクトをサポートします。
于 2009-10-09T09:42:26.303 に答える
6

リモート処理もサポートする asp.net および winform インターフェイスを備えた多層アプリがあります。あらゆる種類の予期しない方法で問題を引き起こす可能性があり、私の意見ではそれだけの価値がないローダーを生成する暗号化タイプを除いて、難読化ツールを使用しても問題はありませんでした。実際、私のアドバイスは、「疫病のようなローダータイプの難読化ツールを暗号化しないでください」という行に沿ったものです。:)

私の経験では、任意の難読化ツールは、asp.net やリモート処理を含む .net のあらゆる側面で正常に機能します。設定に詳しくなり、コードのどの領域でそれをどこまでプッシュできるかを学ぶ必要があります。そして、取得したものをリバース エンジニアリングしてみて、さまざまな設定でどのように機能するかを確認してください。

私たちは商用アプリで何年にもわたっていくつかを使用し、9rays.net の Spices 難読化ツールに落ち着きました。価格が適切で、仕事をし、優れたサポートを提供しているためです。どの難読化ツールを使用するかは問題ではないと思います。リモーティングと asp.net で適切に動作させたい場合、問題と学習曲線はすべて同じです。

他の人が言っているように、あなたが実際に行っているのは南京錠と同等であり、そうでなければ正直な人を締め出したり、アプリを単純に再コンパイルするのを難しくしたりしています.

通常、ライセンスはほとんどの人にとって重要な領域であり、いずれにせよ、ライセンスにはデジタル署名された証明書システムを使用する必要があります。最大の損失は、スマートなシステムを導入していない場合、ライセンスを気軽に共有することから生じます。ライセンス システムを壊した人は、そもそもライセンスを購入するつもりはありません。

これをやりすぎて、顧客やビジネスに悪影響を与えるのは本当に簡単です。シンプルで合理的なことを行い、心配する必要はありません。

于 2008-11-16T19:57:28.593 に答える
4

私は最近、ある無料の難読化ツールの出力を別の無料の難読化ツール (つまり、Dotfuscator CE と CodePlex の新しい Babel 難読化ツール) にパイプしようとしました。詳しくは私のブログで

シリアル化に関しては、そのコードを別の DLL に移動し、それをプロジェクトに含めました。いずれにしても、XML に含まれていないシークレットは含まれていないため、難読化は必要ないと判断しました。これらのクラスに重大なコードがある場合は、メイン アセンブリで部分クラスを使用することでカバーできます。

于 2008-09-11T11:53:35.760 に答える
3

Smartassemblyに問題はありません。

于 2008-09-16T11:12:55.457 に答える
3

リアクターを避けてください。それは完全に役に立ちません(そして、はい、私はライセンス料を支払いました)。Xenocode は私が出会った最高のもので、ライセンスも購入しました。サポートはとても良かったですが、機能しただけなのであまり必要ありませんでした。私は見つけたすべての難読化ツールをテストしましたが、私の結論は、xenocode がはるかに堅牢であり、最高の仕事をしたということです (また、.NET exe を他では見られなかったネイティブ exe に後処理する可能性もあります)。

リアクターと xenocode には主に 2 つの違いがあります。1 つ目は、Xenocode が実際に機能することです。2 つ目は、アセンブリの実行速度に違いがないことです。リアクターを使用すると、約600万倍遅くなりました。また、reactor はワンマン オペレーションだったという印象も受けました。

于 2011-05-04T09:43:43.223 に答える
3

プラットフォームで最も安価で最もよく知られているものを使用して、1 日で終了する必要があります。高水準言語の難読化は困難な問題です。なぜなら、VM オペコード ストリームは、ネイティブ オペコード ストリームが抱える 2 つの最大の問題である関数/メソッドの識別とレジスタのエイリアシングの影響を受けないためです。

バイトコードのリバースについて知っておくべきことは、セキュリティ テスト担当者がストレート X86 コードをレビューして脆弱性を見つけることは、すでに標準的な方法であるということです。生の X86 では、関数呼び出し全体でローカル変数を追跡するどころか、有効な関数を必ずしも見つけることさえできません。ほとんどの場合、ネイティブ コード リバーサーが関数名や変数名にアクセスすることはありません。ただし、Microsoft コードをレビューしている場合を除きます。Microsoft コードのレビューでは、MSFT がその情報を公開しています。

「Dotfuscation」は、主に関数名と変数名をスクランブルすることによって機能します。Reflector が文字通りソース コードを放棄しているデバッグ レベルの情報を含むコードを公開するよりも、おそらくこれを行う方がよいでしょう。しかし、これを超えると、収益が減少する可能性があります。

于 2008-09-10T21:38:59.277 に答える
3

「Dotfuscator Community Edition」を使用できます。Visual Studio 2008 Professional には既定で付属しています。あなたはそれについて読むことができます:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

製品の「プロフェッショナル」バージョンは費用がかかりますが、より優れています。

本当にコードを難読化する必要がありますか? 通常、セキュリティ目的で使用されない限り、アプリケーションを逆コンパイルしても問題はほとんどありません。誰かがあなたのコードを「盗む」ことを心配しているなら、気にしないでください。あなたのコードを見ている人の大多数は学習目的です。いずれにせよ、.NET には完全に効果的な難読化戦略はありません。十分なスキルを持つ人なら、いつでもアプリケーションを逆コンパイル/変更できます。

于 2009-07-16T21:47:44.360 に答える
2

これはマイクロソフト自身の文書です。それが役立つことを願っています...、それは2003年のものですが、まだ関連している可能性があります.

于 2009-07-16T21:38:16.373 に答える
2

私は .Net 1 から同じアプリケーションでコードを難読化してきましたが、これはメンテナンスの観点から大きな頭痛の種でした。あなたが言及したように、シリアル化の問題は回避できますが、間違いを犯して難読化したくないものを難読化するのは本当に簡単です。ビルドを壊したり、難読化パターンを変更して古いファイルを開けなくなったりするのは簡単です。さらに、何がどこで間違っていたのかを見つけるのが難しい場合があります。

私たちの選択は Xenocode でした。今日もう一度選択するとしたら、コードを難読化したり、Dotfuscator を使用したりしたくありません。

于 2008-08-21T20:31:40.433 に答える
1

私は最新のrpojectで難読化/リソース保護を使用する必要があり、CryptoObfuscator素晴らしくて使いやすいツールであることがわかりました。シリアル化の問題は、このツールの設定の問題のみです。

于 2011-04-22T11:18:34.787 に答える
1

無料の方法は、Visual Studio 内から dotfuscator を使用することです。それ以外の場合は、外出して Postbuild ( http://www.xenocode.com/Landing/Obfuscation.aspx )のような難読化ツールを購入する必要があります。

于 2009-07-16T21:38:38.480 に答える
1

Windows クライアントで SmartAssembly を使用しています。うまく動作します。

いくつかの余分な問題も追加します。ログファイル/例外にクラス名を出力する場合は、難読化を解除する必要があります。もちろん、その名前からクラスを作成することはできません。そのため、クライアントを見て、難読化によってどのような問題が発生する可能性があるかを確認することをお勧めします。

于 2009-04-04T11:28:07.090 に答える
1

それはすべて、使用するプログラミング言語に依存します。記事を読む:難読化されたコード

于 2009-07-16T21:31:20.273 に答える
1

Obfuscar と呼ばれる優れたオープン ソース バージョンがあります。うまくいくようです。タイプ、プロパティ、フィールド、メソッドは除外できます。オリジナルはこちら: https://code.google.com/p/obfuscar/ですが、もう更新されていないようですので

于 2013-12-19T04:24:37.257 に答える
0

SmartAssemblyは素晴らしいです、私は私のプロジェクトのほとんどで使用されました

于 2010-12-01T04:49:21.953 に答える
0

私もスマートアセンブリを使用しています。ただし、Web アプリケーションでどのように機能するかはわかりません。ただし、アプリがシェアウェア タイプの保護を使用している場合は、ブール値を返すライセンスをチェックしないようにしてください。バイトクラックが簡単すぎる。 http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

于 2009-04-04T10:53:56.470 に答える
0

また、 MetaforicViLabsなどの新しいコード保護テクノロジや、ByteShield などの新しいソフトウェア コピー保護テクノロジについても検討することをお勧めします。開示: 私は ByteShield で働いています。

于 2009-01-03T18:56:59.397 に答える
-1

難読化は実際の保護ではありません。

.NET Exe ファイルがある場合は、はるかに優れたソリューションがあります。

私はThemidaを使用 していますが、非常にうまく機能していると言えます。

Themida の唯一の欠点は、.NET DLL を保護できないことです。(Exe および DLL 内の C++ コードも保護します)

Themida は、ここで言及した難読化ツールよりもはるかに安価であり、市場で最高の著作権保護対策 を備えています。コードの重要な部分が実行される仮想マシンを作成し、クラッカーによって設定された操作またはブレークポイントを検出するいくつかのスレッドを実行します。.NET Exe を、Reflector が .NET アセンブリとして認識さえしないものに変換します。

ウェブサイトの詳細な説明をお読みください: http://www.oreans.com/themida_features.php

于 2014-03-06T03:03:16.467 に答える
-1

Eziriz のデモ版を試してみました....気に入りました。しかし、ソフトウェアを持ってきたことはありません。

于 2009-09-04T03:21:58.513 に答える
-2

私は Rummage と呼ばれる製品を試してみましたが、ある程度の制御を提供するのに適しています... Eziriz が提供する多くの機能が欠けていますが、Rummage の価格は高すぎます...

于 2013-09-06T17:27:45.063 に答える