.NET§0の難読化ツール(および難読化解除ツール)

.NETプラットフォーム用にコンパイルされたアセンブリ(exeおよびdll)から、高レベル言語(C#、VB.net)のコードを簡単に復元できることは周知の事実です。 これは、プログラムにライセンスシステムがある場合にだけ簡単に削除できることを意味します。 ソースコードが不正な競合他社などによってコピーされる可能性もあります。 このような脅威から身を守るために、ほとんどの商用ソフトウェア開発者はあらゆる種類の難読化ツールを使用しています。

なぜ誰から自分を守るのか?


明らかに、保護の段階の1つとしての難読化は、商用ソフトウェアにのみ関連しています。
シリアル番号またはアクティベーションによる登録システムを使用する場合、プログラムを保護するには、お金が足りない場合(プログラムが高価な場合)、または芸術を愛するためにクラッカーを書く「クラッカー」が必要です。 条件分岐の場所の特定やシリアルの確認は、ILコードからの「ノード」がある場合、わかりやすいC#コードが表示される場合よりもはるかに困難です。 もちろん、これは万能薬ではありませんが、ハッキングに必要なn番目の分を追加します。 (nが十分に大きい場合、非常に頑固な個人だけが壊れようとします;)

さまざまな産業スパイから保護することも必要です。 簡単です。メタデータを削除してプログラムの残りの部分を混乱させるだけで、競合他社がプログラムを最初から作成する方が、自分のものを分解するよりも安くなります。

通常、アセンブリメタデータの表示には.NET Reflectorが使用されます。 シンプルで直感的なインターフェースと、プラグインで機能を拡張する機能を備えています。
初心者は、リフレクターのWebサイトでスクリーンショットと使用例を見つけることができます。

いくつかの商用アセンブリビューアとデコンパイラもあります。おそらくそれらを後でリストします(アセンブリの半分だけが試用版を分解し、ライセンスバージョンの「幸せ​​な所有者」はリフレクターとそれほど大きな違いはないと報告します)。

難読化ツールとパッカー


.NETアプリケーションは、主に2つの方法で保護しようとしています。ILコードを直接難読化する (出力がほぼ有効な* .netアセンブリであり、変更されていないMS.NETまたはmonoで実行できる場合)。 パッケージング -アセンブリを変更して、出力がアンパックモジュールとパックされたILコードを含むwinapiアプリケーションになるようにします。
*-アセンブリには無効なIL命令が含まれている可能性がありますが、実行されません。 また、アセンブリは全体として「正常」に見え、サポートされている任意のランタイムで実行できます。
難読化では、すべてが明確であるように見えます。.netアセンブリをフィードし、.netアセンブリを取得します。すべて同じように機能します。 余分な「隠された」データはなく、すべてが適切な場所にあり、混乱して名前が変更されただけのものです。
パッカーの場合、いくつかの問題が待っています。

さまざまな「プロテクター」( プロテクター )は通常、両方のアプローチを組み合わせており、このレビューの両方の部分で説明します。

リバースツール


最初の最も基本的なツールはリフレクターです。 通常、誰もが自分の好みに合わせてプラグインを彼に送ります。 reflexilのみをお勧めします。これは、メソッドのバイトコード、アセンブリプロパティの変更を可能にし、便利な厳密名削除ユーティリティを含んでいます。 このプラグインを使用すると、クラックを作成するのに非常に便利です;)
アセンブリが難読化されている場合、リフレクターで表示するのはあまり便利ではないため、変更(またはコードを抜く)する前に「難読化解除」する必要があります。
また、独自の難読化解除ツールを用意しておくと便利です。難読化解除ツールは、特定のタスクのニーズにいつでも簡単に「対応」することができます。
パッカーを扱う場合、デバッガー(WinDbg、OlyDbg)、ダンパー(PEツール)、PEファイルエディター(CFF Explorerなど)などのネイティブリバースエンジニアリング用のさまざまなツールが必要になります。 .net-unpackingの特定のツールと同様に: Generic .NET Unpacker.net dumper(KDD) 、.Net Assembly Rebuilder 。 レビューの後半でそれらに会います。

すべて、私の言い回しはこれで終わります。次の投稿には詳細が含まれます(写真であっても);)

継続→

以下の投稿のおおよその内容:

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


All Articles