.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別の有料の難読化ツールは、非常に濁っていて、裁判もありませんでした。 サポートは応答しませんでした。
CodeVeil900ドル++アンチウイルスで燃えるという事実で知られています。 すべてのすべてで良いこと
コードウォール400ドル++難読化ツール
Decompiler.NET550ドル--放棄された3年
深海200ドル±-多くの切り替えを行う傾向があります。 一般的に、使用できません。
デサウェア1,500ドル+.NET 4.0なし
DNGuard HVM900ドル半分のボタンがないバグのあるインストーラー、最初のアプリケーションがクラッシュしました
Dotfuscator1900ドル+コミュニティバージョンは非常に貧弱で、Enterpriseは高価ですが、それだけの価値があるかもしれません。
dotNetProtector500ドル++4 MB以上の彼のDLLをプロジェクトに追加しました
Eazfuscator.NET無料--簡単な名前変更
Goliath.NET115ドル+±リフレクターアセンブリは開きませんが、WinDbgではソース全体が表示されます
Netorbiter無料--面白い難読化ツール。 独自のプロキシを作成し、exe-shnikを完全にコピーして、さらに何かを追加しました。
オブフスカー無料--Mono.Cecilに基づく単純な名前変更。 .NET 4.0はサポートしていません
Obfuscator.NET200ドル作られたアセンブリはすぐに倒れました。 .NET 3.5でも。
.NET用のPCguard400ドル難読化よりもライセンスに重点を置いています。 裁判は送られませんでした。 ビューは非常に興味深いでしょう。
フェニックスプロテクター無料(-)(-).NET 3.5でも保持されません
Salamander.NET800ドル--Webサイトの例を使用すると、リフレクターはもちろん、待ち伏せを疑って誓うが、強打で分解する
Sharpbfuscator無料--どうやら、製品は長い間放棄されてきました。
Skater.net100ドル--奇妙なことに、いくつかのメソッドの名前を変更し、古いILDASMを検索しました。 おそらく放棄された。
Spices.NET400ドル-±アセンブリ全体を暗号化しますが、これは悪いことです
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ドルでした。 はい、それは既存のものよりも良くありませんが、一つだけあります-難読化の原則は、それが不適切であると感じるために公に発表されていません。 クラックするには、もっと時間をかけるだけです。
彼らが言うように、自分で考えて、自分で決めて...

Source: https://habr.com/ru/post/J97062/


All Articles