.NET TIPS

難読化したアプリケーションをClickOnceで配布するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2006/12/01

 「TIPS:アプリケーションの難読化を自動化するには?」で説明したように、.NET Frameworkを使って開発したソフトウェアの逆コンパイルを防ぐ手段としては、「難読化」(Obfuscation)がよく用いられる。難読化とは、逆コンパイルにより生成されるソース・コードを読みにくくするためのもので、Visual Studio 2005(以降、VS 2005)には簡易な難読化ツールの「Dotfuscator Community Edition」(以降、Dotfuscator CE)が標準で含まれている(ただしVS 2005 Express Editionは除く)。ちなみにDotfuscatorにはCommunity Editionのほかに「Standard Edition」(以降、Dotfuscator SE)と「Professional Edition」(以降、Dotfuscator PE)がある(このうちDotfuscator SEは日本では受注停止のようだ)。

 本稿では、Dotfuscator CEで難読化したアプリケーションを、ClickOnceによって配布する際のちょっとした注意点を紹介しよう。

 なお、Dotfuscatorの内容や基本的な使い方については、「.NET逆コンパイラとコードを難読化するDotfuscator」をご一読いただきたい。

難読化されたアプリケーションをClickOnceで配布するには?(Dotfuscator CE編)

 まず「TIPS:アプリケーションの難読化を自動化するには?」で紹介したMSBuildファイル(VS 2005のプロジェクト・ファイル)を作成し、アプリケーションを難読化の自動実行に対応させる。

 ここで、VS 2005のIDEからClickOnceの発行を行おうとすると、Dotfuscator CEでは少しやっかいな問題が発生する。というのも、Dotfuscator CEでは難読化が完了したときに次のようなダイアログが表示され、このダイアログが原因でClickOnceの発行に失敗してしまう。

Dotfuscator CEで難読化が完了した際に表示されるダイアログ
このダイアログは難読化処理を完全に自動化できないようにするためにわざと表示しているようだ。Dotfuscator PE/SEでは表示されない。

 VS 2005のIDEでClickOnceの発行を行うと、最初にビルド処理が実行され、次に発行処理が行われるという2段階になっているが、第1段階のビルド処理の最中にUI(ここでは上記ダイアログ)が表示されてしまうと、第2段階の実際の発行処理の際に「構成」(DebugやReleaseなど)や「プラットフォーム」(AnyCPUなど)などの情報がおかしくなってしまい(具体的には「構成」がDebugに、「プラットフォーム」がAnyCPUに初期化されてしまい)、結果としてClickOnceの発行に失敗する(可能性がある。※構成とプラットフォームの設定が初期値と同じデバッグ・モードによる発行では問題にならず、無事に発行できる)。これはIDE自体の制限(バグ?)のようである。

 この構成が初期化される問題は、コマンドライン経由でClickOnceの発行を行うことにより(要するにMSBuildを使ってPublishターゲットを実行することで)回避できるようだ。コマンドラインによる発行方法については「TIPS:ClickOnceアプリをコマンドラインから発行するには?」で詳しく説明しているので、そちらをご一読いただきたい。

 いずれにせよPublishターゲットを実行する際には(前述したように)まずビルド処理が行われるので、上記のダイアログが表示される。従って、コマンドラインによる完全に自動化した(無人の)発行は難しい。なお、Dotfuscator CEでコマンドライン実行をする際には、VS 2005のIDEが起動していなければならない(起動していない場合エラーになる)。

Dotfuscator PE/SE編

 またDotfuscator PE/SEを使う場合、ClickOnceで発行するのは簡単だろう。筆者は実際には試していないが、これらのエディションでは上記ダイアログは表示されないようになっているということなので、VS 2005のIDEから直接発行しても前述の問題は発生しないはずである。特にDotfuscator PEは、MSBuildとの統合やサテライト・アセンブリ(=多言語対応アプリケーション)の難読化などを行う機能が搭載されているので、より高度な難読化が必要な場合は入手したいツールだ。End of Article

カテゴリ:開発環境&ツール 処理対象:ビルド
関連TIPS:アプリケーションの難読化を自動化するには?
関連TIPS:ClickOnceアプリをコマンドラインから発行するには?
 
この記事と関連性の高い別の.NET TIPS
アプリケーションの難読化を自動化するには?
ClickOnceアプリをコマンドラインから発行するには?
多言語対応アプリケーションをClickOnceで配布するには?
GACコンポーネントをClickOnceで配布するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH