難読化が必要な理由

.NET 用に作成されたプログラムは、リバース エンジニアリングが簡単です。これは .NET のデザインに不備があるからではありません。最新の中間コンパイル言語が採用されているからです。.NET は表出的なファイル構文を使用して実行可能コード、すなわち MSIL (Microsoft Intermediate Language) を配信します。このような中間ファイルは、バイナリのマシン語コードよりも高度なもので、直接表示でき、最終的に理解可能な識別子やアルゴリズムを積み重ねたものです。判読性を高め、柔軟性と拡張性を持たせながら、同時に重要な部分を難読化することは、もちろん容易なことではありません。

.NET 逆コンパイラは誰でも無償で入手でき、これを使用してコードを簡単にリバース エンジニアリングできます。誰でもすぐに、ライセンス供与されたコード、コピー保護メカニズム、所有権を有するビジネス ロジックなどを、(合法的であるかどうかは別として) かなり判別しやすい状態にすることができます。どのような目的であれ、ソフトウェアの詳細を隅々まで調べることができるため、セキュリティ上の欠陥を探して利用したり、ユニークなアイデアを盗んだり、プログラムをクラックすることなども可能です。

これが必ずしもリスク、または重大な問題になるわけではありません。知的財産について懸念のある組織は、.NET プラットフォームを考える際、リバース エンジニアリングを防ぐためのソリューションが存在することを知っておく必要があります。難読化は、アセンブリ内のシンボルの名前をシームレスに変更する技法であり、その他にも逆コンパイラを妨害する対策を備えています。難読化を正しく適用すると、アプリケーションはそのままにして、さまざまな規模の逆コンパイルに対する保護を高めることができます。

© 2002-2007 PreEmptive Solutions. All rights reserved.