.NETアプリケーションの保護-それにもかかわらず、ニシンを包むものは何ですか?
.NETアプリケーションの保護-それにもかかわらず、ニシンを包むものは何ですか?
この
レビューにもかかわらず。 上記を表面的なだけでなく誤解を招くものと考えているため、難読化ツールのレビューを自分で書くことにしました。
関連する質問が1つあります。この製品は脱保護から保護されていますか? 難読化ツールのメーカーが正直に警告していることを考えると、アセンブリは分解されたままです。 そして、これは.Netアプリケーションのセキュリティ問題の基礎です。 完全な保護は、さまざまな環境でアセンブリを開始するという不便さをもたらし、難読化はコードの条件付きオープン性をもたらします。 コードの受信、その可読性、および保護の削除を複雑にする問題を解決するために残っています。
だから私たちが持っているもの:
.Netアプリケーションを保護するプログラムには2つのクラスがあります。
- プロテクター(ネイティブプロセッサラッパー)
同様のマシンは、難易度の低い難読化ツールと組み合わせて提供されます(通常は、アセンブリメンバーの名前の変更を提供します)。 ラッパーにはさまざまなタイプがあり、サラマンダープロテクターで最もエレガントに表示されます(ここでは難読化ツールは非常に高品質です)。難読化ツールの弱点という意味での例外はサラマンダーですが、ここではデバッグと起動の両方で問題が発生する可能性があります。
代表者: CodeVeil、Salamander Protector、.Net Reactor。
利点:いわゆる。 デコンパイラおよびILDASMのアクセス不能。 しかし、実際には、このアクセス不能性は明らかです。 .Netは、メインメモリ(メモリ内)にあるアセンブリの権利を制限します。アセンブリは、起動する前にディスク上のどこかに保存する必要があります。
短所:より厳しいポリシー、ウイルス対策の不適切な応答を伴う環境でアセンブリを開始することに関する多くの問題は、ユーザーがこの方法で保護された製品を恐れ始めるという事実につながり、安全なアセンブリをデバッグできなくなります。 さらに、32ビット環境と64ビット環境の両方で動作する安全なアセンブリを作成できないこと。 開発者はAnyCPU構成でプログラムをコンパイルして、32ビット環境と64ビット環境の両方で動作することができますが、どちらか一方です。 まあ、実際に-明らかな利点。 トレッドメーカーは通常、トレッドで保護する前にアセンブリを難読化することを推奨しています。これにより、保護の脆弱性が認識されます。
- 難読化ツール
これらは、.Net環境にとってより自然な保護方法を提供します。その後、アセンブリは、起動とデバッグのために追加のアドオンとシャーマニズムを必要としません。
a。 MSサービスとインターフェイスを使用せずにメタデータにアクセスし、難読化されたアセンブリを生成するスタンドアロンの難読化ツール。つまり、.Netアセンブリを操作するための独自のアクセスマシン、パーサー、ジェネレーター、およびその他のツールを備えています。
代表者: Spices.Net難読化ツール、Dotfuscator、{SmartAssembly}
利点:保護機器の選択における外部サービスからの独立性、保護に対する広範囲で非標準的なアプローチ。
短所:責任あるメーカーが正直に警告し、コードが分解されたままであるため(ILDASMでない場合、何らかの職人による逆アセンブラーにより、ソースコードはSSCLIまたはMonoで取得できます)。
b。 MSサービスに依存(ここでのリストは大きい-ILASM / ILDASMの操作、COM経由のアクセス、および.Net 2.0からのサービスの使用から)。 サービスeは標準的でない何かを台無しにする機能を提供するため、そのような機能は明らかに制限されています。
代表者:サラマンダー難読化ツール、Skater.Net、WiseOwlからの振る舞い(これはほとんど未知の未知の難読化ツールですが、良質であり、先駆者の1人です)。
利点:私は知りませんが、いずれにしても、サンショウウオは良い難読化ツールを提供します。
短所:不安定性、サービスへの依存、したがって資金の制限(Salamanderは、.Net 2.0や.Net 1.1などの異なるプラットフォームのアセンブリを含むプロジェクトでは動作できません)。 プラス-パラグラフa)と同じ欠点。
開発者への推奨事項
それらはほとんどありません。開発の開始時に、プロジェクトが難読化されることを忘れないでください。 これは、アセンブリの特定のメンバーの可視性を規制する必要があることを意味します。これは、アセンブリを難読化する必要があり、そうでないことを意味します。 難読化ツールの主な問題は、リフレクション/シリアル化の使用です。 .Netには、メソッドを呼び出したり、名前でアクセスしたり、構造化ストレージやデータの読み取りにクラスを使用したりするためのさまざまな可能性があります。 難読化ツールはそのようなことを認識できないため、コーディングプロセスでいくつかのルールを使用して、こうしたケースを難読化から比較的簡単に除外する価値があります。
- シリアル化とリフレクションで動作するクラスは、別のアセンブリに配置する必要があります。 これらのクラスとそのメンバーは、とにかく一般公開されている必要があるため、これは難しくありません。
- 特定の名前空間で宣言するためにシリアル化リフレクションで機能するクラスを宣言することは難しくありません。この場合、難読化からすべてを一括で除外します。
- コードでserialization-reflectionを使用する必要がある場合は、そのようなメソッドを特別な属性でマークすることをお勧めします。 合板のドアに安全ロックをかけないでください。 妄想を緩和します。 難読化後に取得したアセンブリを調べ、クラスとそのメンバーを確認することをお勧めします-好奇心itive盛な目からすべてを隠したかどうか、最適化された設定で必要なものがすべて難読化、隠蔽、隠蔽されているかどうか これらの製品からわかるように、ILDASM(リフレクター)で開いてみてください。 ILDASMからダンプしようとします(可能な場合)-生成されたファイルを参照してください。 これは、アセンブリから他の何かを作成すること、コードを成形すること、またはデコンパイラーでコードを取得することがどれほど難しいかを理解するために必要です。
今、バランスについて。 さて、Reflectorを使用し、Spices.Netを使用してください-ここでは、プロテクターではなく、通常の難読化ツールによって保護されています。以前のブラウザーが書いたように、すべてがwinDbgで簡単に表示されます。 ポイントは何ですか? 誰かがいくつかのReflectorの秘密を学びました(そして、Proバージョンは現在無料ではありません)、誰かがSpices.Netの秘密を学びましたか? しかし、これらのアプリケーションはネイティブプロセッサコードなしの純粋なILで記述されています(Salamanderとは異なります)。
- 難読化ツールのテストについても言いたいことがあります。特定の製品を試した後、壊れたアセンブリを受け取った場合、製品の製造元に連絡するのが理にかなっています。まず、製造業者がそのような問題を解決するためのパンです。次に、割引を受ける本当のチャンスがあります(製造業者は顧客のことを考えています)、製品がまったく無料である場合-協力は常に支払われます。 メーカーにあなたの問題を解決する機会を与えてください、それは相互に有益です。
今-比較
あなたの時間を無駄にしないために、難読化ツールの多くの代表がテーブルに含まれていなかったとすぐに言うことができます。 はい。Dotfuscatorは、Microsoftが推奨する製品であるため、このリストに含まれていますが、Dotfuscatorが主張するすべてではない場合もあります。 また、Smart Assemblyの将来は、会社
が100万ドルで
Red-Gateを購入した後、明確に呼ぶことはできません-(私見、この取引は価値がありませんでした)。 現在、Reflectorはめったに更新されず(広範なプラグインのセットを除いて良好です)、SmartAssemblyで最もよく見られます。 SQLに関係する会社が難読化-逆コンパイラーの市場に参入する理由(Obfuscator-Decompilerパッケージは生産的なアプローチですが、Salamander、Spices.Netにあります)-市場は非常に具体的であり、多くの有望なプロジェクトが既に消滅していますDecompiler.Netなど(たとえば、Salamanderのずらされた位置でさえ、V-Spot Eliminationテクノロジーをリリースしませんでしたが、
このレビューでは、著者はそれを誇りに思っていると書いています(唯一の質問は、リリースしなかったか、リリースしましたか?彼らは何かを実装し、実際に特許出願は9Rays.Netによって行われました)。
だから:特徴 | Dotfuscator | Spices.Net難読化ツール | サンショウウオ難読化 | {SmartAssembly} |
---|
試用版で | 実際、Community Editionは最小限のセットです。 | 完全なビューを提供し、機能に制限はありません(難読化されたアセンブリに特別なウォーターマークを付けます-「Obfuscated by Spices.Obfuscator。Not for Commercial use」)、完全なセットで提供されます-GUI、VS Integration、MSBuild統合、コンソールおよびSDK 非営利プログラムを保護するために無料で使用できます。 | 制限-コンソールバージョンが提供されます。 | 機能制限。 |
インターフェース、自動化、統合 | インターフェイスはあまりありません。 簡単に言えば-い(まあ、vsyuと色の場合は...)。 コンソールバージョンが存在します。 ルールを適用する可能性がありますが、かなり混乱します。 ルールを適用しますが、やや混乱します。 自動化はありません。 MSBuildでの統合、アドイン形式でのVSとの統合。現在のプロジェクトのビルドプロセスには統合されません。 | Spices.Netの一部としてのGUIバージョンとコンソールの両方で提供されます。 GUIバージョンは、アセンブリを探索するための多くの追加ツールを提供します。 自動化があります-Spices.Net難読化ツールを使用して独自の難読化ツールを作成する方法がC#で提供されています。 さらに、難読化イベントのステップ(VSビルドイベントに類似)がサポートされているため、難読化プロセスのステップ間にカスタムアクションを挿入できます。 MSBuildとVSの統合が存在します-プロジェクトプロパティで難読化オプションを直接構成し、ソリューションプロジェクトを有効/無効にし、一般的に難読化をオフにすることができます。 | GUIが付属しています。 コンソールがあります。 自動化はありません。 統合はありません。 | 素敵なウィザードスタイルの気取らないインターフェイス。 コンソールが存在します。 自動化はありません。 統合もありません。 |
耐タンパー性 | スニッチモジュールはエンタープライズに配信され、企業の盗難を防ぐように設計されています。 通常のソフトウェアの場合、このプログラムのインターネットへのアクセスを無効にするか、単に保護を削除するだけで十分です。 | あります。 ハッキング、名前変更、または改ざんされたアセンブリは動作を停止します。 ILASM / ILDASMラウンドトリップとアセンブリの単純な名前変更の両方に対する保護(つまり、IDの変更-これには、アセンブリの厳密な名前の場合はその名前とフルネームの両方、およびバージョン番号が含まれます)。 興味深いのは、このテクノロジーの導入後、Spices.Netのハッキングされたバージョンが見つからなくなり、SalamanderとSmartAssembly(制御フローを提供することです!) | いや | いや |
文字列暗号化 | あります | あります。 さらに-リソース保護(暗号化および圧縮なし、ただし機能します) 耐タンパー性) | あります。 | あります。 さらに-リソースの圧縮と暗号化。 |
AntiILDASM、反逆コンパイル | AntiILDASMは、逆コンパイルに対する反作用はありません。 | AntiILDASMは、逆コンパイルに反対です(Reflectorは使用しませんが、Salamander Decompilerは部分的に使用できます。Spices.NetDecompilerから自動的に保護します)。 | AntILDASMは、Salamander Decompilerから自動的に保護します。 | Antildasmは |
未使用のコードと宣言の削除(プルーニング) | 5月 | たぶん柔軟に | 5月 | たぶん。 |
ソフトウェアの透かし | 5月 | 可能(偽造防止機能付き-つまり、TamperProofテクノロジーが使用されます) | いや | いや |
制御フローの難読化 | デコンパイラーによって部分的に認識可能なものがあります。 | その代わりに、CodeAnonymizerテクノロジーは、逆コンパイラーを処理するより効果的な手段として提案されています。 | はい、ただし逆コンパイラーが認識できます。 言及されたV-Spot Elimination-Spices.Net CodeAnonmizerで実装されたものと同様の未実現技術 | はい、ただし逆コンパイラーによって認識可能 |
混合コードアセンブリを使用する | あまり良くない、サイズ最適化なし | たぶんサイズの最適化と | はい、しかし不安定です | 制限される場合があります(同様のコードにエラー報告は挿入されません) |
64ビットのサポート | あります | あります | いや | いや |
難読化解除StackTrace | コミュニティエディションではなく、エンタープライズでも、難読化マップに基づいて非常に便利ではありません | ツールSpices.Netがあり、より詳細な無料ソリューションを提供します。 | いや | 実装されたエラー報告モジュールがあります。 ユニークな機能。 |
メリット | VSにはすべての配信が含まれています。 他の難読化ツールとは異なり、新しいバージョンごとに.Netが最初に登場します-結局は内部関係者です。 | 保護装置の幅広い選択。 他の難読化ツールが提供しない2つのテクノロジー。 独自の適切なデコンパイラを使用することで、難読化者は何を保護する必要があるかを理解でき、難読化者は何を保護する必要があるかを理解できます。 プラスのうち、ロシア語の運用サポートと問題解決の建設的な名前も挙げられます。 | 最古の代表者、質の高い保護。 | シンプルで、小さな開発者の基本的なニーズを満たし、彼らのために投獄されますが、このため、保護具の良い武器を持っていますが、小ささは柔軟性がありません。 |
短所 | 不合理に高価です。 機能と仕上がりのリストが価格と一致しません。 サポートは無料ではありません。 | 豊富な設定とツールが停止する場合があります。 小規模開発者のニーズではなく、業務用のシャープニング。 彼らだけのために すべてがコンソールバージョンにあります。 | 時代遅れの設定の柔軟性。 .Net 2.0のリリースで、彼らはすでにこのプロジェクトを終了しましたが、Obfuscator + Protectorの組み合わせを残しました。 さまざまな.Netバージョンのプロジェクトで作業することはできません。 最近のバージョンでは、.Netは不安定です。 サポートについて連絡を取るのは難しく、長いことです。 | この優れた製品の将来は不明確です。 統合の欠如、耐タンパー性はパフォーマンスを低下させます。 しかし、彼らが最初に提供できたのは、リフレクターからの保護でした。 以前は非常に友好的なサポートがありましたが、今はわかりません。 |
価格について
特別に価格を比較しませんでした。 Dotfuskatorの価格は高く、サポート率は障壁のようなものであり、明らかに大企業に焦点を当てています。 他のメーカーにとっては、「価格は売り手と買い手の両方に適したものである」という原則の余地があると言えます。 たとえば、インド人が完璧に習得し、150ドルで400ドルの製品を購入する方法を心配していないことを交渉することは、長い間実践されてきました。 学生(アカデミックディスカウント)、あらゆる種類のMVPとMCP、ユーザーグループとコミュニティのメンバー、非営利組織、地域と国、ブログへの言及と製品のロゴの短期間の投稿に対して、未申告の割引があります。 もちろん、製造業者はこれについてサイトに書いていません。 最後に、問題ファイルを提供するか、その逆を行うことができます-セキュリティホールを報告してください。製品の品質の改善につながったメーカーとの協力は歓迎されます。
割引を要求してみてください、しかし、あなたはそれを見つけるでしょう。 頑張って!
PSこの記事の作成に積極的に参加した経験豊富で優秀な人に招待したいという要望があります-私に連絡してください。Source: https://habr.com/ru/post/J106262/
All Articles