14

しばらくの間、CodeVeil というツールを使用していました。そこにもっと良い代替品があるかどうか疑問に思っています。

編集: これ以上多くの人が質問を誤解する前に、断固たるクラッカーがこれらのツールのいずれかを打ち負かすことができることを私は認識しています。私はそれらについてあまり心配していません。これらのツールは、単に「カジュアル クラッカー」を阻止し、人々が当社の IP を盗むのを阻止することを目的としています。彼らがまともなツールを通り抜けるのに十分なほど優れている場合、彼らはおそらく私たちのくだらないコードを盗むことに興味がないでしょう:-P

4

9 に答える 9

5

私は Xenocode Postbuild で多くの成功を収めてきました。このツールは、.NET アセンブリを難読化し、Reflector の逆アセンブリから保護し、.NET アセンブリを 1 つの実行可能ファイルに結合 (「仮想化」) し、.NET アプリケーションを .NET ランタイムのインストールを必要としないスタンドアロンの実行可能ファイルにコンパイルすることさえできます。

于 2008-09-20T03:15:24.190 に答える
4

私は、これらのツールの価値に納得がいかないままです。ライセンス、商標、特許、著作権などの法的保護よりも優れたリバース エンジニアリングを防止するテクノロジー ソリューションはありません。

.NET は、実際には大規模な透過的なソースの動きです。代わりに、ライセンスや著作権などの IP に関する使用条件を組み立てる方がはるかに優れています。

于 2008-09-20T02:22:25.597 に答える
4

.NET アプリケーションをコンパイルすると、大量のメタ情報を含む出力アセンブリが生成されます。この情報により、元のコードに非常に近いものを簡単に再構築できます。.NET Reflector と呼ばれる無料の優れたツールを使用すると、まさにそれを行うことができ、基本クラス ライブラリがどのように機能するかを調べる一般的な方法です。そのツールをダウンロードして使用し、アセンブリ コンテンツの再構築された C#/VB.NET バージョンを表示します。

あなたが商業組織であるなら、コードを作成するのに費用がかかることを人々に簡単に見られたくないでしょう。一般的な方法は、難読化を使用してコンテンツをスクランブルし、実行方法を変更せずに理解を困難にすることです。難読化では、変数やメソッドの名前を変更するなどの手法を使用します。メソッド「a1」、「a2」、「a3」の目的を理解することは、元の「GetName」、「UpdateInterestRate」、および「SetNewPassword」よりもはるかに困難です。

したがって、難読化を使用すると、コードが何を行っているか、およびコードが使用するアルゴリズムを人々が理解するのがはるかに難しくなります。ただし、それが不可能になるわけではありません。C++ コードは、バイナリの作業に時間を費やしても構わないと思っているアセンブラーの専門家が理解できるのと同じように、MSIL の専門家は難読化されたコードを最終的に解決できます。しかし、それは障壁を増やして、ほとんど挑戦しようとしないところまで来ています。

于 2008-09-20T02:50:09.023 に答える
3

正直なところ、あなたが言及したようなツールの難読化以外にできることはあまりありません。.NET は、スクリプト コマンドがバイナリであり、IL と呼ばれることを除けば、スクリプト言語よりも 1 ステップ上の言語です。これは少し単純化しすぎていますが、現実からかけ離れたものではありません。Reflection を使用して作成された優れたプログラムは、.NET アプリケーションのリバース エンジニアリングに使用できます。十分な知識がある場合は、優れた 16 進エディターを使用できます。

于 2008-09-20T02:20:12.060 に答える
3

古い投稿を復活させて申し訳ありませんが、Eziriz の .NET Reactor は見事に機能すると思います。

実際、私はすべての .net アプリに自分で使用していますが、.net リアクターで保護されたプログラムを逆コンパイルできる既存のツールはないようです。詳細については、情報ページhttp://www.eziriz.com/dotnet_reactor.htmを参照してください。試用版と .net リフレクターでテストすると、自分の目で確かめることができます。

于 2008-12-08T09:39:27.133 に答える
2

Visual Studio 2005 および 2008 に同梱されている「軽量」バージョンの Dotfuscation など、難読化のための一般的なツールがいくつかあります。これらのツールには、変数名や関数名の名前変更以上の機能を備えた Pro バージョンがあります。ただし、コードはまだ表示可能で、ソフトウェアのロジック フローを読みにくく理解するのを難しくするために少しスクランブルをかけているだけです。

もう 1 つの手法は、プログラムを暗号化し、実行時に復号化する他のプログラムを使用することです。ただし、これも完全な解決策ではありません。実際、十分な時間と労力を費やした場合、決心したエンジニアがソフトウェアをリバース エンジニアリングするのを防ぐ完全な解決策はないと私は認識しています。

結局のところ、カジュアルなハッカーを思いとどまらせるのを十分に困難にし、リバース エンジニアリングをできる限りコストがかかるようにする保護レベルを決定することになります。お金、または理想的にはその両方。リバース エンジニアリングのコストが高くなればなるほど、努力を惜しまない個人の数は少なくなります。そして、それが難読化の大きなポイントです。

ネイティブ コードにコンパイルされる C++ コンパイラのようなコンパイラを使用すると、この種のリバース エンジニアリングを防ぐことができると考える人もいますが、そうではありません。優れた逆アセンブラーを使用すると、純粋なバイナリ実行可能ファイルでさえもリバース エンジニアリングできるため、完全なソリューションは存在しません。コンピューターがコードを読み取って実行できる場合、コンピューターが使用しているメモリをスキャンして追跡し、暗号化、難読化、またはコードを決心したエンジニアの手に渡さないようにするその他の手段をすべて回避できます。

于 2008-09-20T02:33:41.170 に答える
1

免責事項:私はSmartAssemblyのメーカーであるRedGateで働いていません。私は、手頃な価格の優れたソリューションを見つけた非常に満足している顧客です。

選択は非常に簡単です。SmartAssemblyを選択してください。市場の他の難読化ツールで時間やお金を無駄にしないでください。競合製品の評価に請求できない時間の点でより多くのお金を費やしました。それらはすべて致命的な欠陥があり、デバッグすることはほぼ不可能でした。SmartAssemblyは、優れたサポートを備えた、使いやすく、十分に文書化された、洗練されたアプリケーションです。彼らのフォーラムに質問を投稿し、実際の開発者によるかなり速い回答を期待してください。

SmartAssemblyは、単なる難読化ツールではありません。それはあなたの顧客があなたに自動的に電子メールを送ることができる組み込みの、高度にカスタマイズ可能なクラッシュレポートジェネレータを含む多くの機能を持っています。これらのレポートは、独自のサーバーまたはレッドゲートサーバーのいずれかで表示できます。製品をベータテストしたり、顧客にリリースしたりするときに、これがどれほど役立つかはわかりません。また、デバッガーファイルを生成するため、難読化された製品で発生する可能性のあるリリース後の問題をデバッグできます。

商用アプリケーションを提供している場合は、まともな難読化ツールにお金を使うのが理にかなっています。ここでの悪い選択は、あなたの知的財産を危険にさらしたり、さらに悪いことにあなたを恐ろしいデバッグの日々に導く可能性があります。SmartAssemblyの費用と比較して、この費用はいくらですか?

于 2011-07-27T19:15:04.930 に答える
-2

Obfusticator は優れていると聞いたことがあります。.Net Reflector で使用されます。

于 2008-09-20T02:18:05.187 に答える
-2

もう 1 つはCrypto Obfuscatorです。他のものよりも手頃な価格であり、さまざまな難読化および保護方法を備えており、因果関係のあるハッカーやそれほどカジュアルではないハッカーを阻止します。

于 2009-11-24T05:59:55.750 に答える