このユーザー ガイドは、PreEmptive Protection - Dotfuscator Community 6 について説明しています。 お使いの Visual Studio のインストール履歴およびバージョンによっては、現在、以前のメジャー バージョンである Dotfuscator Community 5 が実行されている可能性があります。 その場合はアップグレードしてください。これは、コードに最新の保護対策が確実に施されていることが重要だからです。 アップグレードは無料で入手できます。
このページでは、現在お持ちのバージョンを判断する方法や、必要に応じてバージョン 6 にアップグレードする方法、2 つのバージョン間で置き換えられたまたは削除された機能について説明します。
Dotfuscator のバージョンの判断
実行している Dotfuscator のバージョンが不明な場合は、次のいずれかを実行することでバージョンを判断できます。
-
Visual Studio の[ツール]メニューを開いて[PreEmptive Protection - Dotfuscator Community]を選択し、Dotfuscator Community のグラフィカル ユーザー インターフェイス(GUI)を起動します。 Dotfuscator GUI から[ヘルプ]メニューを開いて[バージョン情報]を選択すると、バージョン情報画面が表示されます。 この画面には Dotfuscator のバージョンが'表示されます。
-
コマンド ライン インターフェイス(Xamarin アプリなど)を使用して Dotfuscator をビルドに統合している場合は、ビルド ログで次のような行を調べることもできます。
Dotfuscator Community Version 5.42.0.9514-e0e25f754
このテキストを見るためには、ビルドの詳細モードを引き上げる必要があるかもしれません。 Visual Studio の場合は、詳細レベルの設定を参照してください。
バージョンの最初の整数、つまり最初のドット .
の前の数字は、Dotfuscator のメジャー バージョンを示します。 これが 5
の場合は、このページのアップグレード手順を実行して、最新の Dotfuscator 6 の機能と保護の更新を利用できるようにする必要があります。
アップグレード手順
このセクションには、Dotfuscator Community の一般的な使用方法をバージョン 5 からバージョン 6 へアップグレードするための一連の手順が含まれています。
Dotfuscator 6 のインストール
Dotfuscator Community は Visual Studio の拡張機能として配布されます。 Dotfuscator 6 のインストール手順は、お使いの Visual Studio のバージョンによって異なります。
-
Visual Studio 2019。 Dotfuscator Community 6 は Visual Studio 2019 の最新バージョン(バージョン 16.10.0 以降)に含まれています。 Visual Studio 2019 を更新して最新バージョンにします。 これにより、Dotfuscator Community 5 のインストールが自動的に Dotfuscator Community 6 にアップグレードされます。
-
Dotfuscator をまだインストールしていない場合は、まず Visual Studio を更新してからインストールを参照してください。
-
Visual Studio に含まれるリリースのほかに、Dotfuscator Downloads ページからいつでも Dotfuscator Community の最新バージョンを入手できます。
-
-
Visual Studio 2017。 このバージョンの Visual Studio にのみ、Dotfuscator Community 5 が同梱されていました。 しかし、Dotfuscator Downloads ページを開いて適切なダウンロード リンクを選択することで、Dotfuscator Community 6 をインストールまたはアップグレードすることができます。
ダウンロードした
.vsix
ファイルを実行し、画面の指示に従って Dotfuscator Community 6 を Visual Studio にインストールします。 これにより、既存の Dotfuscator Community 5 のインストールがアップグレードされます。 -
上記より前のバージョンの Visual Studio。 このようなバージョンの Visual Studio では、Dotfuscator Community 6 はサポートされません。 新しいバージョンの Visual Studio にアップグレードするか、または Dotfuscator Community から Dotfuscator Professional にアップグレードすることをお勧めします。
以前に Dotfuscator Community 5 を登録していた場合、その登録は、初めて Dotfuscator Community 6 を実行したときに自動的に変換されます。
コマンド ライン インターフェイスのパスの更新
以前に Dotfuscator 5 のコマンド ライン インターフェイス(CLI)を使用してアプリケーションを保護していた場合は、プロジェクトに記述した CLI へのパスを更新し、それを参照するスクリプトをビルドする必要があります。 この対象には、Dotfuscator Community の Xamarin 統合を使用するプロジェクトも含まれます。
Dotfuscator の CLI へのパスが無効になるようになったのは、Dotfuscator Community でインストールされる実行可能ファイルのうち、一部のファイルの名前が Dotfuscator 6 では変更されたからです。 この変更により、これらの実行可能ファイルの名前が Dotfuscator Community と Dotfuscator Professional で同じになります。
実行可能ファイル... | Dotfuscator 5 | Dotfuscator 6 |
---|---|---|
グラフィカル ユーザー インターフェイス(GUI) | dotfuscator.exe |
dotfuscatorUI.exe |
コマンド ライン インターフェイス(CLI) | dotfuscatorCLI.exe |
dotfuscator.exe |
ビルドが無効な Dotfuscator CLI パスを使用している場合、次のようなエラーのいずれかが発生する可能性があります。
'"[...]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe"' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
コマンド ""[...]\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe" Dotfuscator.xml" はコード 9009 で終了しました。
DotfuscatorXamarinEnabled プロパティが 'true' である場合は、DotfuscatorXamarinCliPath ('[...]\DotfuscatorCE\dotfuscatorCLI.exe') で
指定された Dotfuscator コマンド ライン インターフェイスは存在している必要があります。
正しいコマンド ライン インターフェイスのパスを使用するようにビルドを更新するには
-
Visual Studio の[ツール]メニューを開いて[PreEmptive Protection - Dotfuscator Community]を選択し、Dotfuscator Community のグラフィカル ユーザー インターフェイス(GUI)を起動します。
-
Dotfuscator Community GUI で、[ツール]メニューを開いて[Dotfuscator コマンド プロンプト]を選択します。
-
開いたコマンド プロンプトで
where dotfuscator.exe
と入力します。 後で参照できるように、表示された最初のパスをプレーン テキストのドキュメントにコピーしておきます。これが、Dotfuscator Community 6 のコマンド ライン インターフェイスの新しいパスです。 -
ビルド システムに応じて、プロジェクトまたはビルド構成を開きます。
-
Visual Studio プロジェクトの場合は、プロジェクト ファイル(
.csproj
、.vbproj
、または.fsproj
)をプレーン テキストとして開く必要があります。 Visual Studio でプロジェクト ファイルをこの方法で開く手順については、ここをクリックしてください。 -
以前に Dotfuscator Community の Xamarin 統合を使用して Xamarin アプリを保護していた場合は、Dotfuscator を共有ライブラリ プロジェクトに統合するのではなく、個々のアプリ プロジェクト(
MyProject.Android.csproj
、MyProject.iOS.csproj
など)に統合するよう呼び戻します。 現在 Dotfuscator を使用しているすべてのアプリ プロジェクトを更新する必要があります。
-
-
プロジェクト内またはビルド構成内で、Dotfuscator Community 5 のコマンド ライン インターフェイスの古いパスが使用されているすべての場所を見つけます。 これは通常、
dotfuscatorCLI.exe
で終わるパスです。- Dotfuscator Community の Xamarin 統合を使用するプロジェクトを更新するとき、古いパスは
<DotfuscatorXamarinCliPath>
タグと</DotfuscatorXamarinCliPath>
タグの間に配置されます。
- Dotfuscator Community の Xamarin 統合を使用するプロジェクトを更新するとき、古いパスは
-
手順 5 で見つけた古いパスを、手順 3 で書き留めた新しいパスに置き換えます。
古いパスのいずれかが絶対パスでない場合は、前後の状況に基づいて新しいパスを適切に調整する必要があります。 次の例では、古いパスで
VSInstallDir
環境変数が使用されていたため、対応する新しいパスでも同様にする必要があります。- 手順 3 の新しいパス:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
- プロジェクト ファイルの古いパス:
%VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscatorCLI.exe
- プロジェクト ファイルの新しいパス:
%VSInstallDir%\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe
- 手順 3 の新しいパス:
-
Git などのソース管理システムを使用している場合は、手順 6 の変更がそのシステムに反映されていることを確認します。 システムや組織にとって適切であれば、これらの変更をチームの他のメンバーに配布します。
dotfuscator.exe
は、Dotfuscator 5 ではグラフィカル ユーザー インターフェイス(GUI)を参照しますが、Dotfuscator 6 ではコマンド ライン インターフェイス(CLI)を参照するため、複数のコンピューター間で共有されるビルド スクリプトを更新する場合には注意してください。
Dotfuscator 5 がインストールされているコンピューターで Dotfuscator 6 用に更新されたスクリプトを実行すると、そのスクリプトから、意図したコマンド ライン インターフェイスではなくグラフィカル ユーザー インターフェイスが起動されるようになります。 これにより、Dotfuscator の保護が適用されていないにもかかわらずビルドが成功する可能性があります。つまり、出力パッケージが保護されないということです。 その他の場合は、代わりにビルド エラーが発生する可能性があります。
これらのシナリオを回避するには、お使いのコンピューターおよびビルド スクリプトのすべてで同時に Dotfuscator Community をバージョン 5 からバージョン 6 にアップグレードします。
Dotfuscator 構成ファイルのアップグレード
Dotfuscator 6 より前に作成されたすべての Dotfuscator 構成ファイル(Dotfuscator.xml
など)はアップグレードする必要があります。
古い構成ファイルを使って Dotfuscator コマンド ライン インターフェイス(CLI)を実行しようとすると、次のようなエラーが発生します。
Dotfuscator エンジンの初期化エラー:[PreEmptive Analytics]、[Authenticode 署名]、および [明示的なメソッドのオーバーライドを導入する]
設定はサポートされなくなりました。構成エディターで Dotfuscator 構成を開いてください。構成が自動的にアップグレードされます。
構成ファイルをアップグレードするには
-
Visual Studio の[ツール]メニューを開いて[PreEmptive Protection - Dotfuscator Community]を選択し、Dotfuscator Community のグラフィカル ユーザー インターフェイス(GUI)を起動します。
-
問題となっている Dotfuscator 構成ファイルを開きます(Ctrl+O)。
-
[ビルド出力]タブに次のメッセージが表示されます。
[PreEmptive Analytics]、[Authenticode 署名]、および [明示的なメソッドのオーバーライドを導入する] 設定はサポートされなくなりました。 関連する設定は削除されました。アップグレードされた Dotfuscator 構成を保存してください。
-
更新された Dotfuscator 構成ファイルを保存します(Ctrl+S)。
-
Git などのソース管理システムを使用している場合は、Dotfuscator 構成ファイルの変更がそのシステムに反映されていることを確認します。 システムや組織にとって適切であれば、これらの変更をチームの他のメンバーに配布します。
Xamarin 統合の更新
Xamarin プロジェクトに Dotfuscator Community 5 を統合する場合、手順の 1 つとして、カスタムの MSBuild のターゲットとタスク(PreEmptive.Dotfuscator.Xamarin.targets
など)をダウンロードする必要がありました。 これらのターゲットとタスクは Dotfuscator Community 6 で更新されているので、古いバージョンを新しいバージョンで置き換える必要があります。
Xamarin 統合ファイルを更新するには
-
これらのファイルを最初にダウンロードした場所を見つけます。 手順で示された例では
PreEmptive.Dotfuscator.Xamarin
という名前のサブディレクトリを使用しましたが、別のディレクトリにファイルをダウンロードしている可能性があります。そのディレクトリには、Dotfuscator と関係のないファイルも存在するかもしれないし、また、存在しないかもしれません。 -
手順 1 で見つけたディレクトリで、Dotfuscator の Xamarin 統合に関連するファイルを削除します。
-
現バージョンのユーザー ガイドの Dotfuscator 用の MSBuild のターゲットとタスクのカスタム セットをダウンロードするセクションでリンクされている ZIP ファイルをダウンロードします。
-
手順 1 で述べたディレクトリと同じ場所に ZIP ファイルの内容を展開します。
-
Git などのソース管理システムを使用している場合は、古いファイルの削除と新しいファイルの追加がそのシステムに反映されていることを確認します。 システムの種類によっては、これらの変更は置換されるファイルではなく、内容を変更するファイルとして表示される場合があります。 システムや組織にとって適切であれば、これらの変更をチームの他のメンバーに配布します。
このページの他のサブセクションも Xamarin プロジェクトに当てはまるので、残りの手順も同様に確認してください。
属性ライブラリの参照の更新
Dotfuscator では、ソース コードで .NET 属性を使用して特定の機能を構成することができます。 そのような属性をプロジェクトで使用していた場合は、Dotfuscator 6 での変更に対処するためにプロジェクトを更新する必要があるかもしれません。
難読化属性
難読化属性に変更はありません。 これらの属性は .NET 基本クラス ライブラリに定義されており、Dotfuscator Community 6 は引き続きそれらの属性を使用します。
チェック属性
チェック属性を含むライブラリは変更されました。 Dotfuscator Community 5 では、このライブラリは Dotfuscator 自体と一緒にファイルとして配布されました。 Dotfuscator Community 6 からは、代わりにパブリック NuGet パッケージとして配布されます。
まだ古い場所を参照している Visual Studio プロジェクトをビルドしようとすると、次のようなエラーが発生します。
型または名前空間の名前 'PreEmptive' が見つかりませんでした
(using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)。
型または名前空間の名前 'TamperCheckAttribute' が見つかりませんでした
(using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)。
次の警告も表示される場合があります。
この参照を解決できませんでした。アセンブリ "PreEmptive.Attributes" が見つかりませんでした。アセンブリが間違いなくディスクに
存在することを確認してください。この参照がコードで必要とされる場合は、コンパイル エラーが発生する可能性があります。
新しい場所を使用するようにプロジェクトを更新するには
-
プロジェクトの
PreEmptive.Attributes.dll
へのアセンブリ参照を削除します。 -
NuGet パッケージ参照
PreEmptive.Protection.Checks.Attributes
をプロジェクトに追加します。 パッケージは、既定の NuGet フィード nuget.org から入手できます。
また、各チェック属性の ExtendedKey
パラメーターも削除されました。 これらのパラメーターは Dotfuscator Community 5 では無視されましたが、それにもかかわらずソース コードで使用していた場合は、プロジェクトをコンパイルするためにパラメーターの使用を削除する必要があります。
インストルメンテーション属性
インストルメンテーション属性は、Dotfuscator 5 で PreEmptive Analytics 機能を構成するために使用されました。 しかし、PreEmptive Analytics は Dotfuscator 6 で削除されました。削除された機能のサブセクション PreEmptive Analytics を参照してください。 結果として、インストルメンテーション属性も削除されました。
インストルメンテーション属性を使用した Visual Studio プロジェクトをビルドしようとした場合は、チェック属性に記載されているのと同じ種類のエラーと警告が発生する可能性があります。ただし、属性の名前が異なります(たとえば、FeatureAttribute
ではなく TamperCheckAttribute
になります)。
インストルメンテーション属性の使用を含む既にビルド済みのアセンブリに対して Dotfuscator を実行しようとすると、次のようなエラーが発生します。
PreEmptive.Attributes.FeatureAttribute 属性 (SomeNamespace.SomeType::SomeMethod の注釈を設定) は、
このバージョンの Dotfuscator では認識されません。
これらの問題を修正するには、ソース コードからインストルメンテーション属性のすべての使用を削除する必要があります。 また、属性が定義されているライブラリ PreEmptive.Attributes.dll
へのアセンブリ参照も削除する必要があります (さらに、このライブラリに定義されたチェック属性を使用していた場合、それらは移動されました。上記のチェック属性を参照してください)。
削除された機能
Dotfuscator Community 6 は、Dotfuscator Community 5 からの重大な変更を導入しています。 このセクションでは、Dotfuscator Community 5 を使用されていた場合に、ビルドの変更が必要になる変更点や、Dotfuscator の出力に影響する変更点に対処する方法について説明します。 変更点の一覧は、変更履歴で入手できます。
PreEmptive Analytics
Dotfuscator 6 では、チェックの遠隔測定など PreEmptive Analytics をサポートしません。 ただし、チェック自体(アプリケーション通知およびチェック操作を含む)は引き続きサポートされます。
Dotfuscator 6 を使用するには、構成ファイルをアップグレードして PreEmptive Analytics 設定を削除する必要があります。
in-code 属性を使用して PreEmptive Analytics を構成していた場合は、それらをソース コードから削除して、入力アセンブリをリビルドする必要があります。そうした後、Dotfuscator 6 はそれらのアセンブリを保護することができます。
チェックが無効な状態を検出したとき(改ざんが検出された場合など)にチェックの遠隔測定を使用して報告していた場合は、それをカスタム アプリケーション通知に置き換えることができます。この通知は、Azure Application Insights または選択した別のサービスにインシデントを報告します。
サポートされないアプリケーションの種類
Dotfuscator 6 では以下のアプリケーションの種類がサポートされなくなりました。
- Windows Phone
- WinRT(Windows 8 アプリケーション)
- Silverlight
- Unity(ゲーム エンジン)
さらに、ユニバーサル Windows プラットフォーム(UWP)アプリは Xamarin シナリオでのみサポートされます。 他の種類の UWP アプリを保護するには、Dotfuscator Professional にアップグレードして、アプリケーションの保護の手順に従います。
サポートされない入力
Dotfuscator Community では、ユニバーサル Windows プラットフォーム(UWP)の .appx
パッケージが入力としてサポートされなくなりました。 UWP を対象とする Xamarin アプリは、Xamarin 統合により引き続き保護することができます。 他の種類の UWP アプリを保護するには、Dotfuscator Professional にアップグレードして、アプリケーションの保護の手順に従います。
また、.xap
パッケージを入力として使用することができなくなりました。 これは、Silverlight がサポートされなくなったためです。
明示的なメソッドのオーバーライドを導入する
名前の変更オプションの[明示的なメソッドのオーバーライドを導入する]は、Dotfuscator から削除されました。 Dotfuscator 6 を使用するには、構成ファイルをアップグレードして、この設定を削除する必要があります。