ニュートン メニュー

株式会社ニュートン

マイクロソフトパートナー

YouTube公式チャンネル

体験版ダウンロード

製品案内

ライセンスパック

ライセンスについて

カスタマイズ受付

製品購入ガイド

オンラインショップ
直販ショップ !
ニュートンストアで購入
コンポーネントソース
コンポーネントソースで購入

優待販売・
 キャンペーン情報

ユーザサービス
〔サポートページ〕

サポート体制

お知らせ
・ニュースリリース
・懐かCM
・イベント出展
・製品関連記事

会社概要

個人情報保護方針

お問い合わせ先

 

ニュートンホーム Q&A
Spices.NET 5J

.NETアプリケーション難読化ツール
Spices.NET 5J

このページは、Spices.NET 5J のユーザ様より寄せられたご質問の一部とその回答を掲載しております。


【Q&A一覧】

QNo.

Q.質問

日付

A.回答

30

Q. Windows x64 で Spices.NET が動作しないのですが?

2012/02/08

A. Spices.exe.configファイル(デフォルトでインストールすると C:\Program Files (x86)\9Rays.Net\SpicesNet5\Bin フォルダにあります) を下記のAまたはBのように変更してください。

変更前:
<?xml version ="1.0"?>
 <configuration>
  <startup>
   <supportedRuntime imageVersion="v4.0.30319" version="v4.0.30319"/>
   <supportedRuntime imageVersion="v2.0.50727" version="v2.0.50727"/>
  </startup>
 </configuration>

A:
<?xml version ="1.0"?>
 <configuration>
  <startup>
   <supportedRuntime imageVersion="v2.0.50727" version="v2.0.50727"/>
  </startup>
 </configuration>

B:
<?xml version ="1.0"?>
 <configuration>
  <startup>
   <supportedRuntime imageVersion="v2.0.50727" version="v2.0.50727"/>
   <supportedRuntime imageVersion="v4.0.30319" version="v4.0.30319"/>
  </startup>
 </configuration>

29

Q. 難読化によりメソッド名などが変更された場合、変更前と後の対応表を見る機能はありますか?

2011/06/10

A. はい、難読化を行う際に「プロパティ」タグの「ExportObfuscationMap」にファイル名を指定してください。
<ファイル名>.ilomapの一覧表が作成されます。

28

Q. PInvoke (platform invoke) メソッドを難読化できますか?

2008/10/30

A. はい、PInvoke メソッドが完全に記述されていれば難読化できます。
たとえば下記のコードの場合、メソッドは難読化されません。

[DllImport("Gdi32.dll")]
internal static extern int CombineRgn(IntPtr dest, IntPtr src1, IntPtr src2, int flags);


下記のコードのような場合、DllImport の EntryPoint の宣言にメソッド名があるので、メソッドは難読化されます。

[DllImport("Gdi32.dll", EntryPoint = "CombineRgn", CharSet=CharSet.Auto)]
internal static extern int CombineRegion(IntPtr dest, IntPtr src1, IntPtr src2, int flags);

27

Q. アセンブリメンバを難読化から除外する方法はありますか?

2008/10/30

A. はい。下記の2つの方法があります。

1. SDK\Obfuscation Attributes フォルダの該当する言語のファイルをプロジェクトに追加して、難読化から解除するメソッドに下記のように属性を設定してください。

【C#の例】
using NineRays.Obfuscator;

[NotObfuscateAttribute(), DontAnonymizeAttribute(), DontStubAttribute(), DontEncryptStringsAttribute()]

public static bool methodA(string arg)
{
     ・
     ・
     ・
}


2. Spices.Project の ExclusionPatterns 機能を使用できます。
たとえば、ExclusionPatterns に SomeNamespace.* を設定すると、そのクラスを難読化から除外します。また、SomeNamespace.SomeClass.* を設定すると、SomeNamespace.SomeClass クラスを除外します。

26

Q. Spices.Obfuscator で難読化したアプリケーションをデバッグできますか?

2008/10/30
2009/06/18

A. はい、Spices.VSIP.Obfuscator 5J と Spices.VSIP.NET Suite 5J のバージョンでサポートしています。
StripDebugInfo オプションをFalseに設定して、難読化処理を Visual Studio のビルドの処理に統合すると、難読化直後に Visual Studio でアプリケーションをデバッグできます。
Visual Studio 2003 と Visual Studio 2005 で可能です。
(現在 Visual Studio 2008 ではできません。)


2009/06/18公開のバージョン 5.6.2.24よりVS2008のIDEに統合できます。Visual Studio .NET 2003でご利用の場合は、旧バージョン(5.4.6.0以下)をご利用ください。2009/06/18以降出荷の製品には、同梱されています。

25

Q. Spices.Solutionとは何ですか?

2008/10/30

A. これは拡張子が .ilosln の xml ファイルで、1つまたは複数の Spices.Project ファイルで構成されます。
Spices.Soultion は1つの難読化の処理で複数のプロジェクトが処理できます。これは複数のプロジェクトについて別々の設定を行うときに便利です。たとえば作成するアプリケーションを Light、Pro、Enterprise といった複数の種類で作成する場合、Spices.Solution にすべての Spices.Project を設定します。
こうすることにより一回の難読化で全てのプロジェクトを難読化することができます。

24

Q. Spices.Projectとは何ですか?

2008/10/30

A. これは拡張子が .iloprj の xml ファイルで、難読化のパラメータや難読化されるアセンブリの設定を行います。

23

Q. AntiILDASM の効果はどれくらいですか?また、何を保護しますか?

2008/10/30

A. AntiILDASM は .Net SDK で提供されている標準のユーティリティである ILDASM(中間言語の逆アセンブラ)から保護します。ILDASM はアセンブリから完全なコードの一覧を取得して、アセンブリの詳細な解析を可能にします。AntiILDASM は逆アセンブルを防ぐためアセンブリを ILDASM に読み込ませないようにします。

22

Q. Spices.Obfuscator は ASP.Net のコードビハインドのアセンブリに対応していますか?

2008/10/30

A. はい、対応しています。

21

Q. Spices.Obfuscator は CompactFramework のアセンブリに対応していますか?

2008/10/30

A. はい、対応しています。

20

Q. Spices.Obfuscator で難読化したアセンブリを逆コンパイラできますか?

2008/10/30

A. 文字列の暗号化やコードの匿名化、最適化、リソースの保護などアセンブリを正しく難読化すれば、逆コンパイラの使用を防いだり、あるいは逆コンパイラによる出力が理解不能なコードとなります。

19

Q. Spices.Obfuscator で難読化したプログラムには、他のライブラリが必要ですか?

2008/10/30

A. いいえ、Spices.Obfuscator で難読化したプログラムには他のライブラリは必要ありません。

18

Q. Spices.Obfuscator はプログラムのソースコードが必要ですか?

2008/10/30

A. いいえ、Spices.Obfuscator は .NET でコンパイルされたコードを処理するので、オリジナルのソースコードは必要ありません。

17

Q. 増分難読化とは何ですか?

2008/10/30

A. パッチによるソフトウェアのアップデートはよく行われます。この場合アセンブリやアセンブリメンバ間の参照を保持しながらパッチにたいして難読化を行う必要があります。このときの難読化を増分難読化といいます。

16

Q. Spices.CodeAnonymizer とは何ですか?

2008/10/30

A. 相互難読化や高度な難読化を行っても難読化が解決できない問題があります。それは、システムコールや他の外部参照の識別を隠蔽することが不可能なためです。これらの呼び出しは外部コードの一部なので、難読化の対象から外す必要があります。しかし、これらの呼び出しは公開されているAPIであったり詳しくドキュメント化されているため、逆コンパイルや逆アセンブルを行うことによってコードを理解するために十分な情報を提供しています。
Spices.CodeAnonymizer はコードからのそのような呼び出しを削減したり削除することにより、逆コンパイルを困難にします。また、Spices.CodeAnonymizer は外部参照の問題を解決するだけでなく、難読化されていない内部のメソッドやフィールドへの参照を隠蔽することができます。
この他にも、Spices.CodeAnonymizer にはコードの解析や逆コンパイルを困難にするいろいろな方法があります。

15

Q. タンパープルーフとは何ですか?

2008/10/30

A. 厳密名付きのアプリケーションの作成した場合、デジタル署名によってアセンブリを改ざんから防止できますが、それでも元のデジタル署名を削除して別のもので再署名することができます。
しかし、この技術を使用すれば改ざんされたアプリケーションを使用できなくすることができます。

14

Q. 文字列の暗号化とは何ですか?

2008/10/30

A. アセンブリは文字列を使用していろいろな処理を行うとともに、パスワードやアドレス、ライセンスなどの文字列定数などの「秘密」情報を含んでいます。
IL コードは文字列情報を .Net コードから簡単に抽出することができ、関心のある部分を検出して解析することができます。
文字列の暗号化技術はこの情報をコードやメタデータから削除して、解析や改ざんから保護し暗号化します。

13

Q. ソフトウェアの透かしとは何ですか?

2008/10/30

A. ソフトウェアの透かしは、秘密の識別情報や著作権などの情報をアプリケーションに埋め込むときに使用されます。これにより、アプリケーションの改ざんを暴いたり、所有者や配布領域、開発元、シリアル番号を認識することができます。
透かしの情報は、逆コンパイルや逆アセンブリを行っても見られないようにアセンブリに組み込まれます。

12

Q. どうして最適化が必要なのでしょうか?

2008/10/30

A. 難読化処理の過程で使用されない情報や実行されないコードは削除されますので、アセンブリがコンパクトになります。それによりコードの読込が高速になると同時に使用メモリが少なくなるので、コードのパフォーマンスが向上します。

11

Q. どのアセンブリを難読化すべきですか?

2008/10/30

A. 重要なソースコードからなるアセンブリや「秘密」情報を含んでいるアセンブリは難読化するべきです。また、データベースへの要求や特定のリソースやサービスへの参照または、ユーザパスワードやユーザ名などの情報を含んでいる場合は難読化を行う必要があります。

10

Q. 相互難読化とは?

2008/10/30

A. 難読化は1つのアセンブリだけでなく、プロジェクトやライブラリのパッケージ(internal だけでなく pablic コードや複数のアプリケーションやライブラリで使用するデータ)単位で難読化することができます。
この場合、個々のコードの参照や参照するアプリケーションやライブラリのデータを難読化します。

9

Q. どうして難読化が必要なのでしょうか?

2008/10/30

A. .NET のプログラムは簡単に理解できる構造をした中間言語(IL)で作成されているので、簡単にリバースエンジニアリングができます。
.NET コードは逆アセンブルや逆コンパイルを簡単に行うことができるので、ILDASM や Spices.Decompiler といった逆コンパイラを使用して、オリジナルのソースコードに近いソースコードを作成することができます。
ILDASM/ILASM のラウンドトリップを使用して、ライセンス認証やその他の情報を削除することができるので 改ざんしてコードを作成することができます。また、パスワードなどの「秘密」情報を見つけ出すためにコードを解析することもできます。

8

Q. 難読化によってどんなリスクを避けられますか?

2008/10/30

A. * リバースエンジニアリングや逆コンパイル
* 財産の秘密情報の保護
* ラウンドトリップ
* タンパープルーフ
といったリスクを避けられます。

7

Q. 難読化とは何ですか?

2008/10/30

A. プログラム コードを簡単に解析や解読ができないようにする技術です。逆アセンブルしてもそのコードを無意味なものにし、簡単に理解できないように変更します。
アセンブリを ILDASM で逆アセンブルして得られるMSILファイルを修正し、再度これを ILASM で実行ファイルを作成することができます。
Spices.Net は逆コンパイラや ILDASM、ILASM からコードを保護します。

6

Q. Spices.Net がサポートする .Net Framework のバージョンは何ですか?

2008/10/30

A. .Net Framework1.0、1.1、2.0、3.0、3.5 です。

5

Q.Spices.VSIP.Obfuscator(または Spices.VSIP.NET Suite)をインストールしました。Visual Studio 2008 のツールメニューから難読化を行いたいのですが、どうすればいいですか?

2008/07/30
2009/06/18

A.現時点では、Visual Studio 2008 のツールメニューに登録することができません。従いまして、難読化したアセンブリのデバッグを行うことはできません。

バージョン 5.6.2.24以降をご利用ください。

4

Q.コンソールから NRObfuscator.exe を実行すると、「次のアセンブリを変更することは出来ません」というメッセージが表示されます。どうすればよいですか?

2008/07/30

A./PATHS オプションを使用して .NET Framework のパスを設定してお試しください。
例:
"C:\Program Files\9Rays.Net\SpicesNet5\Bin\NRObfuscator.exe"
/SRC="ObfuscateTest.iloprj" /PATHS="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

3

Q.Windows Vista に Spices.NET をインストールまたはアンインストールしようとしているのですが、「サポート担当者またはパッケージのベンダに問い合わせてください」というメッセージが表示され、インストールまたはアンインストールができません。回避方法を教えてください。

2008/07/30

A.Windows Vista 上で次の設定を行ってください。
[コントロールパネル]→[クラシック表示]→[ユーザアカウント]→[ユーザアカウント制御の有効化または無効化]→[ユーザアカウント制御(UAC)を使ってコンピュータの保護に役立たせる]のチェックを外してください。
その後で、再度インストールまたはアンインストールを行ってください。

2

Q.サーバに Spices.NET をインストールして各クライアントから使用する場合のライセンスはどうなりますか?

2008/02/22

A.サーバの他に各クライアントにもライセンスが必要です。

1

Q.ライセンス認証を行わずに使用することはできますか?

2008/02/07

A.はい、30日間使用することができます。 それ以降はライセンス認証を行っていただかないと使用することができませんので、お早めにユーザ登録をお願いいたします。

Copyright (C) NEWTONE Corporation. All rights reserved.