SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

デブサミ2011セッションレポート(PR)

デブサミ2011レポート
.NETアセンブリの宿命

  • このエントリーをはてなブックマークに追加

 マイクロソフトの近藤和彦氏とエージーテックの岩沢宏美氏のセッションでは、最新のVisual Studio 2010の注目ポイントが紹介され、同時に.NETアプリケーションなどにおけるリバースエンジニアリングの危険性、その対策を紹介するものになった。 ソースコードの解析を完全に阻止することはできない。しかしVisual Studio 2010にバンドルされているツールなどで難読化を行うことにより、そのハードルを簡単に上げることが可能だ。

  • このエントリーをはてなブックマークに追加

 マイクロソフトの近藤和彦氏とエージーテックの岩沢宏美氏のセッションでは、最新のVisual Studio 2010の注目ポイントが紹介され、同時に.NETアプリケーションなどにおけるリバースエンジニアリングの危険性、その対策を紹介するものになった。ソースコードの解析を完全に阻止することはできない。しかしVisual Studio 2010にバンドルされているツールなどで難読化を行うことにより、そのハードルを簡単に上げることが可能だ。

日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 開発ツール製品部 エグゼクティブプロダクトマネージャー 近藤和彦 氏
日本マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部 開発ツール製品部 エグゼクティブプロダクトマネージャー 近藤和彦 氏
株式会社エージーテック プロダクト&プランズ プロダクトマネージャー 岩沢宏美 氏
株式会社エージーテック  プロダクト&プランズ プロダクトマネージャー 岩沢宏美 氏

.NETやクラウドなど最新テクノロジーに対応

 本セッションではまずマイクロソフトの近藤和彦氏が登壇し、2010年4月リリースのVisual Studio 2010の新機能の中で、ユーザーから反響が大きいものが紹介された。まず、最新の.NETフレームワーク4に対応した。加えて過去の2.0以降の開発を可能にするマルチターゲット機能により、Visual Studio 2005からの過去の資産の保守も可能としている。

 同時にWindows 7対応がポイントで、ジャンプリスト、サムネイル、マルチタッチなど、アプリケーションの操作性を向上させる機能を開発出来る。またリッチなWebアプリケーションを開発するため、Silverlightアプリケーションのデザイナー機能が強化されている。

 クラウド対応では、Windows Azureアプリケーション開発、高度なデバッグ、クラウド上のアプリケーションやデータの操作を可能にしている。ハードウェア面ではマルチコアの能力をフル活用するための機能が強化された。

 一方、ツールの観点では、テスト管理機能が強化されている。たとえばテストの自動化ではロジック単体テストが注目されがちだが、UIとDBロジックの単体を含めた3層アーキテクチャをカバーする自動化に対応している。さらにHyper-Vを活用してテスト環境をイメージ化し、厳密なテスト環境の共有と問題の再現性を向上させている。その他、テストを計画し、実施、追跡する専用ツールが提供され、IDEの操作性もコードの検索性向上やマルチモニターへの対応などにより向上している。

.NETアセンブリに潜む危険性と難読化の有効性

 近藤氏によるVisual Studio 2010のポイント解説に続き、エージーテックの岩沢宏美氏が「コード・セキュリティという面ではどうか」と問いかけながら登壇した。つまり逆コンパイラ対策への注意喚起だ。

 たとえば.NETアプリケーションの場合、モジュールを.NET Reflectorというツールを使うとコンパイル前のソースコードを、かなりの確度で解析することが出来る。これは、.NETアセンブリが中間言語(MSIL)として生成されるためであり、それはJavaでも同様だ。

 実際、近藤氏が行って見せたデモでは、クラス名、メソッド名などがほぼそのまま表れた。開発者はコードを読みやすくする目的で、OpenCustomerDBなど、目的を想像できる名前をつけることが一般的になっている。そのため、解析したソースから構造を推理することは容易だ。さらに読み込むと、DBなどにアクセスするためのパスワードを読み解くことができる場合もある。

 そこで岩沢氏が推奨するのが難読化、つまり逆コンパイラの出力を分かり難いものに変換し、プログラムの解析に必要な労力を増やすことだ。その代表的な手法が「名前の変更」で、機能には一切影響しない形でクラス、メソッド、インタフェース、フィールド名などを意味のない名前に変えてしまう。たとえばGetPayroll(int key)をa(int a)という様に。

 さらに「オーバーロード誘導」という、引数の型が異なる複数のメソッドをできるだけ同じ名前に変えてしまう手法もある。たとえばGetPayroll(int key)をa(int a)、MakeDeposit(float amt)をa(float a)というように。この結果、解読はほぼ不可能になる。

図:難読化の仕組み
図:難読化の仕組み

リバースエンジニアリング対抗ツールをバンドル

 実はVisual Studio 2010には、難読化ツール「Dotfuscator」がバンドルされている。起動するには「ツール」メニューから選択すればいい。対象とするアセンブリを指定して条件を設定し、ビルドすれば、難読化を行うことが出来る。ここでパブリックのメソッドやクラスの名前を変えてしまうと外部からの呼び出しが不能になるので、自動的にそれらを対象から除外することも可能だ。

 Dotfuscatorには難読化以外の機能も追加されており、改ざんを検出しての強制終了や、利用可能期間を限定するアプリケーションのライフサイクル管理を可能にするモジュールを埋め込むことができる。さらにエンドユーザーの利用状況のデータを取得することも可能だ。

 さらに強固な難読化を行いたいのであれば、バンドルされているDotfuscator CE(簡易版)より機能豊富な有償のPRO版を検討してもいい。

 例えば.NETアセンブリには、元のソースコードを厳密に反映する命令シーケンスがそのまま残っている。そこでPRO版を使えば、命令シーケンスのブロックを並べ替えたり、偽の制御フローを追加することにより逆コンパイラを混乱させる「制御フローの難読化」が可能になる。さらにパスワードなどを記述した文字列を暗号化することも可能だ。

 最後にマイクロソフトの近藤氏が「Visual Studio 2010は、ビジネスの様々なアイデアや戦略の実現をサポートできるように進化している。同時にDotfuscatorのようなツールも活用し、より有益なアプリケーションを開発していただきたい」と締めくくり、合同によるセッションが終了した。

お問い合わせ

株式会社エージーテック

東京都千代田区神田錦町1-21-1 昭栄神田橋ビル3F

http://www.agtech.co.jp/

【営業部】03-3293-5230 / sales@agtech.co.jp

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
デブサミ2011セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5796 2011/03/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング