.Net Frameworkの難読化ツール Dotfuscator CE 5 をコマンドラインで実行

Visual Studio 2010 の中に標準添付されているDotfuscator Community Edition 5.0は有料版じゃなくてもコマンドラインで難読化ファイルを作成できる。

しかし、ユーザー登録が必要。
その後にダウンロードできるアップデートを適用すると dotfuscatorCLI.exe が新しく作成されるので、これを利用する。

 

 参考(・・・というかまんまこれ)
How to use PreEmptive Dotfuscator in Visual Studio Setup project to protect your code

 

PreEmptive のサイトにログインした後、 Download  タブの中へ行く、
To run Dotfuscator CE5 (2010) from the command line, install version 5.0.2601 を見つければ後はDLしてインストールするのみ。

f:id:sechs:20131217153825p:plain

 

その後、Visual Studio 2010 のプロジェクトの ビルド後に実行するコマンドライン
以下を入れればOK。

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\PreEmptive Solutions\Dotfuscator Community Edition\dotfuscatorCLI.exe" /in:$(TargetFileName) 
copy /y "$(TargetDir)Dotfuscated\$(TargetFileName)" "$(TargetDir)$(TargetFileName)"

 この部分はOSが64bit か 32bitか判別してProgram files の場所を適切に変更するバッチファイルの方が良さそう。

 

Vista なので Visual Studio 2012以降は残念ながら調べきれず。
7にする許可が欲しい...

 

追記 2013/12/18 16:39

バッチファイルとビルド後のコマンドラインを作成したので記述

 

.xmlで、Dotfuscatorの設定データを読みだして変換実行している。

Release_Obfuscation.bat

@echo off

 

if exist "%systemroot%\sysnative\" (

  echo 32bit on 64bit

  set ProgramFilesRoot=%ProgramFiles(x86)%

) else if exist "%systemroot%\syswow64\" (

  echo 64bit on 64bit

  set ProgramFilesRoot=%ProgramFiles(x86)%

) else (

  echo 32bit on 32bit

  set ProgramFilesRoot=%ProgramFiles%

)

 

set DOTFUSCATOR_CLI=%ProgramFilesRoot%\Microsoft Visual Studio 10.0\PreEmptive Solutions\Dotfuscator Community Edition\dotfuscatorCLI.exe

 

set dotfuscatorXML=%1

 

rem --- exec ---

 

echo "%DOTFUSCATOR_CLI%" %dotfuscatorXML%

 

"%DOTFUSCATOR_CLI%" %dotfuscatorXML%

 

.

ビルド後のコマンドライン Releaseでのみ実行

if $(ConfigurationName) == Release (

  call $(SolutionDir)Release_Obfuscation.bat "$(SolutionDir)Dotfuscator.xml"

  move /y $(TargetDir)Dotfuscated\$(TargetFileName) $(TargetDir)$(TargetFileName)

)