プログラムを難読化することによって、「Reflector for .NET」などの逆コンパイルツールから、作成したアセンブリのソースコードを守ります。以下に主な機能を列挙します。
機能 |
内容 |
マルチタスク |
タスクを別々のスレッドで実行したり、実行するタスクの優先度を指定できます。TaskListで実行をモニターしながら次のタスクにとりかかることができます。 |
ローカライズ |
Spices.ObfuscatorにはSpices.Localizerというモジュールが含まれています。これはアプリケーションをローカライズするために、Localizerで作成したnrlocファイルを使用
します。
難読化処理でアプリケーションをローカライズするためには、Spices.Projectビルドの難読化オプションでnrlocファイルとローカライズ言語を指定
します。 |
自動化 |
Spices.Obfuscatorは、難読化処理を自動化することができます。Spices.ObfuscatorのConsole
Editionは、スクリプト(JSおよびVBS)やコマンド(CMD およびBAT)ファイル
から実行できます。またスクリプトからSpices.ProjectオブジェクトやSpices.Solutionオブジェクトを使用することができます。
製品には、Spices.ObfuscatorのGUI、Spices.Obfuscatorのコンソール
エディション、自動化のサポートモジュールが含まれています。 |
Obfuscation Events
(難読化イベント) |
ObfuscationEventsは、難読化処理の流れの中に必要なファイルのビルドの準備、展開や記述など他の命令を含めることができます。
ObfuscationEventsは、Spices.ProjectとSpices.Solutionの両方でサポートされています。
|
Code Flow Obfuscation
(コードフローの難読化) |
Spices.Obfuscatorは、特許出願中のSpices.Anonymizerを使用しています。これは、逆コンパイルや逆アセンブルした後でILコードを完全に再利用できなくなるように暗号化する機能です。
|
アセンブリの検証 |
Spices.Obfuscatorは、PE、メタデータ、ILについての生成したアセンブリを検証します。 |
アセンブリの最適化 |
Spices.Optimizerはメタデータやアセンブリのパフォーマンスの最適化をおこないます。 |
VS2003 と VS2005との統合
|
Spices.Netは、Visual Studio 2003 と MS Visual Studio 2005
に統合して使用できます。 |
MSBuild プラットフォームとの統合 |
Spices.Obfuscatorは、MSBuildと統合して使用できます。MSBuildは、新しい拡張可能なXMLベースのビルド
エンジンです。 |
難読化されなかったメソッド名の変更 |
新機能のSpices.Anonymizerは、難読化されなかったメソッドを別の名前に置き換えます。 |
外部参照の偽装 |
Spices.Anonymizerは、参照された型やメソッド、フィールドへの呼び出しを偽装します。
|
Spices.Solution |
Spices.ProjectのオブジェクトをSpices.Netにロードする新しいオブジェクトです。プログラムはいろいろな構成やパッケージで提供されている場合がありますが、Spices.Solutionは、
これらの構成やパッケージをひとつのソリューションとして作成し、一度に難読化します。 |
Spices.Obfuscatorの難読化
|
もちろん、Spices.Net自身、Spices.Obfuscatorで難読化されています。 |
.Net フレームワークのサポート |
Spices.Obfuscatorは、.Net フレームワーク(1.0、1.1、2.0、3.0、3.5、4.0、Compact
Framework)をサポートします。 |
全アセンブリ型および言語のサポート |
Spices.Obfuscatorは、C#、VB.Net、Delphi.Net、managed
C++によるアセンブリをサポートします。 |
強力な増分難読化 |
Spices.Obfuscatorは、強力な増分難読化(インクリメンタルな難読化)をサポートします。アセンブリの構造体が変わっても、メンバ名はそのままです。 |
AntiILDASM機能 |
Anti ILDASM機能は、プロテクトされたアセンブリをロードする際に、ILDASMや他のほとんどの逆コンパイラをクラッシュします。Spices.Obfuscatorは、
保護されたアセンブリをSpices.Decompilerによる逆コンパイルから守るためにNotDecompile属性を組み込んでいます。 |
文字列の暗号化 |
Spices.Obfuscatorは、文字列を隠蔽して暗号化し、この情報の取り出しや逆アセンブルが非常に困難な見えない小さなヒープとしてILコードに埋め込みます。
サポートしているモードは次の3つです。
- Hide (暗号化せずに文字列を隠します)
- Encrypt (内部の暗号化実装を使用して文字列を暗号化します)
- 3DES (TripleDES アルゴリズムを使用して文字列を暗号化します)
Spices.Anonymizerは、可読化を防ぐために文字列の呼び出しを偽装します。
|
タンパープルーフのアセンブリの作成
(改ざんを防止するアセンブリの作成) |
この技術は、文字列とバイナリーリソース(ユーザー文字列とコードで使用するバイナリー配列)を暗号化するもので、特許を取得しています。これは覗き見や変更からアセンブリを保護します。 |
相互難読化 |
Spices.Obfuscatorは、相互難読化(難読化されたアセンブリのメンバは、参照されているアセンブリも難読化されます)をサポートしています。これは全アセンブリを1つに結合するより
良い方法ですが、保護の程度は同じです。
Spices.Obfuscatorは、フレンドアセンブリを自動的にサポートします。 |
カスタマイズ可能な難読化オプション |
Spices.Project
(.iloprj)に含まれる各アセンブリには、難読化を制御するいろいろなオプションがあります。 |
難読化ルール |
難読化オプションは、アセンブリメンバの型を含めたり除外したりするルール(ObfuscationOptions.Members)を指定します。
また、Obfuscation.Membersには事前に決められた構成ルールもあります。 |
属性ベースの難読化 |
Spices.Obfuscatorは、属性をベースにする難読化をサポートします。
ソースコード(C#、 VB.Net、
Delphi)にObfuscate、NotObfuscate、DontEncryptStrings、SpecialNamespace、SpecialName、NotObfuscateMembersなどの難読化の属性
を設定します。 |
厳密名のサポート |
Spices.Obfuscatorは厳密名のアセンブリをサポートしており、厳密名のキーファイルが定義された場合、難読化の後でアセンブリを再署名します。 |
名前付けの規約 |
Spices.Project
(.iloprj)に含まれるアセンブリにはそれぞれ個別の難読化オプションがあるので、次の9つの名前付け規約から1つを選ぶことができます:Numbers、Alphabetical、AlphaNumeric、
NonDisplayable、CustomAndNonDisplayable、AlphaNumericAndCustom、
AlphaNumericAndNonDisplayableAndCustom、AlphaNumericAndNonDisplayable、
CustomDictionary。
NonDisplayableを使用する場合、ILDASMまたは他のアセンブリ ブラウザは、正確にアセンブリ名を表示しません。 |
オーバーロードの名前変更 |
Spices.Obfuscatorは、独自のShrinkNames機能を使用して名前の長さを短縮します。これは、メタデータの文字列ストリームのサイズを大幅に減らし、より小さいアセンブリを作成することができるDoublePackString機能を改良したものです。 |
除外と置換 |
Spices.Obfuscatorは、一般的な表現でアセンブリメンバを手動で難読化したり除外することができます。 |
アセンブリの圧縮と最適化 |
Spices.Obfuscatorは、メタデータのサイズを(45%まで)減らし、アセンブリのサイズを最適化してアセンブリの性能を向上させます。 |
デバッグのサポート |
Spices.Obfuscatorは、デバッグ可能なアセンブリを作成します。
|
デバッグ情報の除外 |
Spices.Obfuscatorは、難読化されたアセンブリからデバッグ情報を除外することができます。
|
スタック トレースの解読をサポート |
Spices.Obfuscatorは、スタック トレースの解読ツールを提供しています。 |
ソフトウェア ウォーターマーク(透かし) |
Spices.Obfuscatorには、ソフトウェアのウォーターマーク(透かし)機能があります。ソフトウェアのウォーターマークをNineRays.Obfuscator.SoftwareWatermark属性の難読化されたアセンブリに埋め込
むことができます。ソフトウェアは、この属性を簡単に認識することができ、この属性のWatermarkプロパティからソフトウェアのウォーターマークを取り出すことができます。 |
コンソール インターフェイス |
Spices.Obfuscatorには、NAntやVisual
StudioのBuildイベントなどバッチ/自動ビルドで使用可能な独立したコンソール機能があります。Spices.Obfuscatorのコンソール
機能には、Spices.Obfuscatorの全ての機能があります。 |
独自のアセンブリ ビルダ |
Spices.Obfuscatorは、オリジナルのアセンブリと互換性のあるアセンブリを生成する独自のアセンブリ
ビルダを使用します。
ilasm-ildasmのラウンド トリップは必要ありません。アセンブリ ビルダがすべての作業を処理します。 |
独自のメタデータ アクセス エンジン |
Spices.Obfuscatorは、C#、managed C++、Vb.Net、J#,、C#
Builder、Delphi.Netで生成された.Netアセンブリ とモジュール(.Net
1.0、1.1、2.0、Compact Framework.Net)で動作可能な、独自のメタデータ アクセス
エンジンを使用しているので、アセンブリの構造に悪影響を及ぼすことはありません。 |
IDEの統合 |
Spices.VSIP.Net (Visual Studio Integration
Package)バージョンでは、Spices.Obfuscatorは、Visual StudioのIDEから使用が可能です。 |