Dotfuscatorチュートリアル – .NET6アプリケーションの難読化について
現在(2023年3月30日時点)の.NET開発環境において、LTSの最新バージョンは、.NET 6.0です。高速なパフォーマンスやシンプルな構成はもちろんのこと、Web開発やクラウドネイティブアプリケーションの開発にも最適化された豊富な機能が提供されています。
Dotfuscatorは、アップデートによって.NET6に対応するようになりました。.NET6を使用する開発者は、Dotfuscatorを使用することで、より高度なセキュリティを実現することができます。
今回は、Dotfuscatorを.NET6プロジェクトに統合するための、DotfuscatorのMSBuildターゲットの使用方法を紹介します。
MSBuildターゲットを使用することは、当製品の開発元であるPreEmptive社から推奨されており、ソリューション内のすべてのプロジェクトに含まれるアセンブリが、Releaseビルドにおいて自動的に保護されるようになります。
1.プロジェクトファイルの編集
Dotfuscatorを.NET6プロジェクトに統合するためには、プロジェクトファイル(.csproj、.vbprojなど)を編集する必要があります。まず、プロジェクトファイルを編集できるように、プロジェクトをアンロードします。
「プロジェクトファイルの編集」をクリックすると、以下のようなXML文書(csprojファイル)が表示されます。
修正前
続いて、以下の通りにXML文書(csprojファイル)を編集します。
- ① プロジェクトのルートにある<Project>タグからSdk属性を削除します。
- ② <Project>タグの元の値と一致するようにSdk属性を更新しつつ、<PropertyGroup>タグの前に以下の<Import>タグを追加します。
修正後(前半部分)
- ③ </PropertyGroup>タグのあとに、SDKのターゲットをインポートする<Import>タグを追加します。また、<Project>タグの元の値と一致するようにSdk属性を更新します。
- ④ 以下の新しい要素をすべて追加します。
修正後(後半部分)
※DotfuscatorMSBuildDirタグについては、DotfuscatorのMSBuildコンポーネントのパスを指定します。NuGetパッケージを使用する場合は、以下のディレクトリにMSBuildコンポーネントがダウンロードされますので、パスを更新してください。
XML文書(csprojファイル)は以下のように変更されました。
修正後(全体)
net6.0 enable enable $(MSBuildProgramFiles32)/MSBuild/PreEmptive/Dotfuscator/6 true true
プロジェクトを再度読み込みします。正しく変更がされていない場合は、以下のように読み込みに失敗することがあります。エラー内容を確認し、必要に応じて対処しましょう。エラーが解消されれば、読み込み失敗メッセージは消えます。
これでDotfuscatorの統合は完了しました。
2.ソリューションのビルド
続いて、実際に統合がされているか確認するために、ソリューションをビルドします。まずはDebugモードでビルドを行い、通常通りビルドが成功することを確認します。
リビルドを開始しました... 1>------ すべてのリビルド開始: プロジェクト:mvctest, 構成: Debug Any CPU ------ C:¥Users¥xxx¥mvctest¥mvctestvmvctest.csproj を復元しました (157 ms)。 1>mvctest -> C:¥Users¥xxx¥mvctest¥mvctest¥bin¥Debug¥net6.0¥mvctest.dll ========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
続いて、Releaseモードでもビルドを行います。
リビルドを開始しました... 1>------ すべてのリビルド開始: プロジェクト:mvctest, 構成: Release Any CPU ------ C:¥Users¥xxxvsource¥repos¥mvctest¥mvctest¥mvctest.csproj を復元しました (2 ms)。 1>プロジェクト参照を基に、新しい Dotfuscator 構成ファイルを生成しています... 1>mvctest.csproj : warning : Dotfuscator 構成ファイルが存在しなかったため、新しい構成ファイルが生成されました: 'C:¥Users¥xxx¥source¥repos¥mvctest¥mvctest¥DotfuscatorConfig.xml'。 1>構成ファイル 'C:¥Users¥xxx¥source¥repos¥mvctestvmvctest¥DotfuscatorConfig.xml' を使用して Dotfuscator を実行しています..." 1>Dotfuscator の実行を完了しました。 1>mvctest -> C:¥Users¥xxx¥source¥repos¥mvctest¥mvctest¥bin¥Release¥net6.0¥mvctest.dll 1>プロジェクト "mvctest.csproj" のビルドが終了しました。 ========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
Releaseモードでビルドすると、Dotfuscatorが実行されていることが分かります。また、最初のビルドの一環として、既定の保護設定を使用した構成ファイル「DotfuscatorConfig.xml」が生成されます。このファイルを使用することで、次回以降も同じ保護設定で難読化を行うことができます。
初回以降は構成ファイルの生成は必要ないため、以下の項目をfalseに変更します。
false
3.Dotfuscator構成ファイルの編集
Dotfuscatorを起動し、ツールバー上の「開く」アイコンをクリックして、DotfuscatorConfig.xmlを読み込むことにより、保護設定を変更することができます。難読化の強度を上げたり、部分的な保護を除外したりするなどの設定変更が可能です。
Dotfuscatorは、最新の開発環境や言語に対応するために、アップデートを継続して提供しています。評価版のご利用を希望されるお客様は、以下のURLよりお申し込みください。
https://www.agtech.co.jp/preemptive/dotfuscator/trial/