難読化されたファイルをClickOnceで配布(備忘録)

Posted on :| コメント (2)

 プログラムを書かない人にとってはまったく役に立たない記事ですが、自分のための備忘録として残しておきます。 Microsoftの新しい配布技術であるClickOnceは、 自由度がない分ユーザーにとってもメリットがあります(自動アップデートなど)。
 Microsoftが想定している範疇であれば簡単なのですが、 例えばリバースエンジニアリング対策として難読化したファイルを配置しようとするととたんに難しくなります。 今回の記事は難読化されたファイルをClickOnceで配信する方法です。

■ビルド時に難読化する

 ClickOnceは発行したときに、自動的に再ビルドされます。ということは、 発行する前に難読化してあるファイルはClickOnceでは無視されると言うことです。
 難読化されたファイルをClickOnceで配信したいなら、まずビルド時に自動的に難読化されるようにしなければなりません。

参考:アプリケーションの難読化を自動化するには? (@IT)

 自動化するには、MSBuildファイルをいじる必要があります。上記の記事が参考になります。吉田は難読化ツールに 「NanDoku」 というフリーソフトを利用しています。このソフトはVisual Studio2005に付属しているDotfuscator CEとは異なり、コマンドラインでも問題なく実行されるので、自動化するにはうってつけです。

  <!-- 難読化 -->
  <Target Name="AfterBuild" Condition="$(Obfuscate)==true">
    <!-- 難読化の実行 -->
    <Exec Command="C:\Tool\編集\NanDoKu\NanDoKu.exe /config=D:\Usr\WorkCopy\syndrome\Syndrome2\Release\Syndrome2難読.ini" />
    <!-- 難読化済みファイルをコピー -->
    <Copy SourceFiles="D:\Usr\WorkCopy\syndrome\Syndrome2\Release\$(TargetFileName)" DestinationFiles="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" />
  </Target>

 基本的にやっているのは@ITの記事と同じです。

■ClickOnceで配置

 ClickOnceで配置するには、Visual Studio2005から通常通りの配置手順を踏み、 その後、アプリケーションマニュフェスト等を再編集してあげます。 再編集しないとハッシュの不一致でClickOnceインストーラがエラーを吐きます

(1)配布するアプリケーションファイルを設定する

  • 通常のIDEによる配置方法と同じです

(2)IDEから「今すぐ発行する」

  • 後々の編集箇所を最小限にするために、必須コンポーネントや更新オプションはしっかり編集

(3)配置したファイルをすべてローカルにダウンロード

  • FTPなどを使い、配置したファイルを一度ローカルにコピー
  • マニュフェストだけでなく.deployファイルも含めてすべてダウンロード

(4)MageUIを使って、アプリケーションマニュフェストを再編集

  • Visual StudioツールにあるMageを起動
  • (3)でダウンロードしたアプリケーションマニュフェスト(.manifest)ファイルを読み込む
  • Filesメニュを開き、Populateで再度ファイルを読み込み直す
  • マニュフェストを保存

(5)MageUIを使って、でデプロイメントマニュフェストを再編集

  • (3)でダウンロードしたデプロイメントマニュフェスト(.application)ファイルを読み込む
  • Application Referenceメニュを開き、 SelectManifestで(4)のアプリケーションマニュフェストを読み直す
  • マニュフェストを保存

(6)編集したマニュフェストをアップロード

  • ここで編集したマニュフェストファイルを再びサーバーにアップロードします

難読化されたファイルのClickOnceによる配置は他所様のウェブサイトでも紹介してますが、どれも手順が複雑です。 悪戦苦闘した結果、このやり方が最も簡単でした。

 ただ、Vistaに対応させるために、 アプリケーションマニュフェストに管理者など特権昇格のための指示はどうやっても書き込めませんでした。

コメント

防備録???備忘録じゃないの?

投稿者 sena : 2009年03月15日 20:08

指摘ありがと

投稿者 吉田章太郎 : 2009年03月16日 08:26

コメントフォームに記入し投稿してください





Search
最近の記事
カテゴリー
過去の記事
Comments
TrackBacks
Feed
Powered by