.NETの難読化ツールの概要

難読化とは何か、.NETの世界でなぜそれが必要なのか、制御フローの難読化とMSILコード暗号化の違いは何であるかを知っていると思います。

また、.NET Reflectorを見て、何らかの種類のシンボリックデバッガーに精通していることを前提としています。WinDbgの例を示します。



私はかなり長い間難読化ツールのトピックを扱ってきましたが、最近、知識を更新する必要がありました。

少し前まで、.NET4用の優れた難読化ツールを選択するという課題に直面していました。 たくさんのソフトウェアをレビューした後、私は小さなレビューを行い、最も有名な難読化ツールを含めようとしました。



一般的な結論と推論






katomの下でそれぞれについて詳しく説明します。





タブレットのエントリはアルファベット順になっているため、誰も気分を害することはありません。

タイトルとURL 費用 制御フロー MSIL暗号化 詳細...
.NETリアクター 180ドル + + コードを暗号化し、解読することは非常に困難ですが、アンパッカーが存在する可能性があります
{SmartAssembly} 795ドル + - RedGateによって使用されます。 汚い。
Aspose.obfuscator (-) (-) (-) プロジェクトはサポートされなくなりました。
組み立てる 無料 - - Studioプラグイン+コンソール。 ほとんど何も難読化されません
バベル 250ドル + 何かが暗号化されていますが、実行時にDumlILを実行できます。おそらくフルバージョンがうまく機能します
ビットヘルメット 250ドル .NETが欠落していると言った
C#ソースコード難読化ツール - - .NETソースで動作するようです。 興味深いアプローチですが、説明と例は別として、何も見つかりませんでした
チルセキュア > $ 1000 トライアルがなくても、有料の難読化ツール。 猫は袋に入っています。
CodeArmor 別の有料の難読化ツールは、非常に濁っていて、裁判もありませんでした。 サポートは応答しませんでした。
CodeVeil 900ドル + + アンチウイルスで燃えるという事実で知られています。 すべてのすべてで良いこと
コードウォール 400ドル + + 難読化ツール
Decompiler.NET 550ドル - - 放棄された3年
深海 200ドル ± - 多くの切り替えを行う傾向があります。 一般的に、使用できません。
デサウェア 1,500ドル + .NET 4.0なし
DNGuard HVM 900ドル 半分のボタンがないバグのあるインストーラー、最初のアプリケーションがクラッシュしました
Dotfuscator 1900ドル + コミュニティバージョンは非常に貧弱で、Enterpriseは高価ですが、それだけの価値があるかもしれません。
dotNetProtector 500ドル + + 4 MB以上の彼のDLLをプロジェクトに追加しました
Eazfuscator.NET 無料 - - 簡単な名前変更
Goliath.NET 115ドル + ± リフレクターアセンブリは開きませんが、WinDbgではソース全体が表示されます
Netorbiter 無料 - - 面白い難読化ツール。 独自のプロキシを作成し、exe-shnikを完全にコピーして、さらに何かを追加しました。
オブフスカー 無料 - - Mono.Cecilに基づく単純な名前変更。 .NET 4.0はサポートしていません
Obfuscator.NET 200ドル 作られたアセンブリはすぐに倒れました。 .NET 3.5でも。
.NET用のPCguard 400ドル 難読化よりもライセンスに重点を置いています。 裁判は送られませんでした。 ビューは非常に興味深いでしょう。
フェニックスプロテクター 無料 (-) (-) .NET 3.5でも保持されません
Salamander.NET 800ドル - - Webサイトの例を使用すると、リフレクターはもちろん、待ち伏せを疑って誓うが、強打で分解する
Sharpbfuscator 無料 - - どうやら、製品は長い間放棄されてきました。
Skater.net 100ドル - - 奇妙なことに、いくつかのメソッドの名前を変更し、古いILDASMを検索しました。 おそらく放棄された。
Spices.NET 400ドル - ± アセンブリ全体を暗号化しますが、これは悪いことです
VMware ThinApp > $ 5000 + + 結果のアプリケーションは、.NETがなくても実行できます。 奇妙な仕掛け
Xenocode PostBuild > $ 1000 + + 難読化ツール自体はうなり声を上げ、あまり良い考えにならない




特に興味深い個人の詳細





.NETリアクター


コードはNecroBit(その技術の名前)を使用して暗号化され、NecroBitが首尾よくうなり声を上げているフォーラムで噂が流布しています。 おそらく私はそれを見つけられなかっただけだ、なぜなら 多くの努力をしませんでした。 コードを解析できませんでした。WinDbgも何も見つかりませんでした。

リフレクター:

.NETリアクター



WinDbgを使用して何かを抽出できますが、メソッドのILコードは提供されません。

.NETリアクター



{SmartAssembly}


最近、RedGateに買収されました。 正直なところ、私はRedGateの選択を理解していませんでした。{sa}はMSILを暗号化する方法すら知りません。 デバッガーに座った後、コードを把握できます。 この難読化ツールの使用はお勧めしません。750ドルの価格は明らかに品質と一致しません。

この難読化ツールがコードで行うことは、次のような難読化制御フローのみです。

L_1 br.s L_4

L_2 br.s L_3

L_3 ret

L_4 push

L_5 ldc.i4.1

L_6 br.s L_2







C#のReflectorはコードを解析しませんが(これは難しくありませんが)、ILでは優れています。

{SmartAssembly}



Salamander.NET


私は彼らのサイトから素晴らしい例をダウンロードしました。 彼らはリフレクターが開かないことを約束しました。 実際、リフレクターは誓ったが、開いた:

Salamander.NET



Babel(無料ではないもの)、CodeWall、dotNetProtector


同じクラスの製品は、さらなるリファクタリングや過度の好奇心からのコード保護が必要な場合に非常に適していると思います。

バベル:

バベル

ただし、WinDbgは、Babelによって作成されたアセンブリの内部に正常に表示されました(おそらく、コミュニティバージョンを使用していたためです。

バベル

C#ソースコード難読化ツール


彼らはソース上で動作することをサイト上に書いており、これは難読化されたソースをもたらします。 非常に興味深いアプローチですが、残念ながら、難読化ツール自体をダウンロードすることはできません。 マイナス-このアプローチでは、MSIL暗号化と誤った指示は不可能です。



XHEO CodeVeil


この難読化ツールの以前のバージョンには、非常に迅速に出現する多くのクラックがありました。 これは、この難読化ツールの仕組みをハッカーが知っていることを示唆しています。 最新バージョンのクラックは見ませんでしたが、悪い問題があります。



あなたはそれを使用することができますが、驚きを期待しています。



dotNetProtector


アセンブリは非常に優れていることが判明しましたが、待ち伏せが待っていました。アセンブリには、この難読化ツールから4 MBのDLLが付属していました。

dotNetProtector

Spices.NET


非常によく知られた製品で、作成されたアプリケーションのハッキングが非常に簡単であることに驚きました。

Spices.NET



Goliath.NET


リフレクターアセンブリは開かず、暗号化されます。 難点は、アセンブリが完全に暗号化され、アプリケーションの起動後に解読されることです。 復号化後、メモリの保護なし:

ゴリアテwindbg



Eazfuscator.Net


難読化ツールは無料です。 簡単な名前の変更だけができるのは残念です。 喜ばしいこと(私は個人的にコンソールまたはMSBuildバージョンに興味があります)-難読化のプロセスは非常に簡単で、すべてアセンブリファイルをドラッグアンドドロップすることです。 結果はこちら

Eazfuscator.NET



VMWare ThinApp、Xenocode PostBuild


難読化ツールも同様の原理に基づいて構築されており、プリコンパイルされた.NETアセンブリをアプリケーションに導入することでコードを実行できます。これにより、JITコンパイル呼び出しがインターセプトされる可能性がなくなります。

結果のアプリケーションは、マシンに.NETがインストールされていなくても実行できます。 作成されるアプリケーションのサイズは、使用するライブラリに応じて10..50 MBです。

これらのソリューションは非常に高価です。 しかし、残念なことに、クラックはPostBuildに(最後のものでも)行きます。 おそらく、よく知られているサークルには、準備が整った開梱者もいます。



何を選択しますか、%username%?



この質問に対する明確な答えは与えられていません。それはすべてあなたのコードの値に依存します:

  1. コード全体 -コード内の1つの「トリック」だけでなく、コード全体も重要です。 簡単な難読化ツールでコードを暗号化します。MSILを暗号化することをお勧めします。 すべてのコードが本当に重要である場合、完全に解読することは再度書くよりも難しくなり、誰もそれをしません。
  2. 別の「トリック」 -たとえば、鍵の検証。 そのようなコードを一般に公開しないことをお勧めします。試用版の機能を削除することをお勧めします。 フルバージョンでは、キーを確認する必要がありますが、盗難のリスクは低くなります。 それでも、難読化ツールをもっと真剣に使用することをお勧めします。




私は何を使用していますか?



上記のどれでもない。 私は自分の難読化ツールを使用します。 これは、.NET Reactorに似た、プラットフォームに依存したピース単位のアセンブリ暗号化です。

その作成のコストは約3000ドルから5000ドルでした。 はい、それは既存のものよりも良くありませんが、一つだけあります-難読化の原則は、それが不適切であると感じるために公に発表されていません。 クラックするには、もっと時間をかけるだけです。

彼らが言うように、自分で考えて、自分で決めて...



All Articles