« 2012年8月 | トップページ | 2013年2月 »

2012年9月

Windows8を脱獄させる方法

Windows8では、デスクトップアプリは今まで同様自由にインストールして使えるが、Windowsストアアプリ(旧称メトロスタイルアプリ。ModernUIアプリ、Windows8アプリとの表記もアリ。早くわかりやすい統一用語がほしいよ。。)に関しては、Windowsストアからインストールするしかない。Windowsストア以外からアプリをインストールすることは原則禁止なのである。Windowsストアでアプリを公開するにはMicrosoft社の審査を通過しなければいけないので、安全なアプリだけが公開されており、インストール可能になるというメリットがある。

それがMicrosoftさんの方針なのだからIT技術者も一般ユーザーもみんな、それに従うことになる。その戦略は賛否両論あるが、ここでは受け入れることにする。iPhoneも野良アプリは禁止で、AppStoreからアプリをインストールするしかないしね、Androidでも、おそらくほとんどの機種で、既定で野良アプリのインストールは禁止の設定になっているよ。

さて、本題に入りますが、技術的に考えた時、どうやって野良アプリのインストールができない仕組みになっているんだろう?という疑問が湧くわけです。iPhoneでは、ユーザーは管理者権限がないので勝手にアプリをインストールすることはできない。Androidでもユーザーは管理者権限が無いので、好き勝手なことはできないようになっている。それで、セキュリティホールを突いて管理者権限を獲得し、許可されていない動作を行うように改造(いわゆる「脱獄(jailbreak)」)をして、野良アプリを入れたりする人もいる。

ところがですよ、Windows8では、ユーザーはローカルコンピューターの管理者権限を持ってるわけです。Windowsでは当たり前のことですね。管理者権限があれば、なんでもできるわけです。レジストリを書き換えたり、隠しファイルを閲覧したり、あらゆるオブジェクトの所有者権限を得られるしシステムファイルを消すこともやろうと思えばできるわけですよ。それでどうやって脱獄できないようになっているの?と。

色々とWeb資料をあさっていると、何となくそれがわかってきました。

Microsoftさんは、野良アプリのことをサイドローディング(sideloading)と言っています。サイドローディングとは「サイドロードすること」。「サイドロード」?聞きなれない言葉です。。調べてみると、「ダウンロード」や「アップロード」をもじった言葉で、ダウンロードやアップロードのようにリモートからコピーするのではなく、手元のDVDやPCなどからコピーするっていうニュアンスの言葉でした。なるほど。。

そして本題の疑問へ。「Windowsストアアプリのexeを、管理者権限でコピーさえすれば、サイドロードできんじゃねぇの?」と。そこで試に、Windowsストアアプリのexeを探して(\Program Files\WindowsAppsの下にあるヨ)エクスプローラーでダブルクリックして起動してみる。すると…
Needappcontainer_3
こんなメッセージが出て、起動できないんデス。。。WindowsストアアプリはアプリコンテナーというOSの機能からしか起動できないってことですね。(そうしないとサンドボックスにならないもんね!)

そしてアプリコンテナー(ProcessExplorerで見るとDComLaunchというサービスのようです)から起動してもらうためには、アプリをちゃんとインストールする必要がある訳です。ちなみにアプリのインストールのことをなぜかMicrosoftさんは「登録」(原文ではRegister)という用語で表現しています(単にレジストリキー等を登録するというニュアンスでしょうか)。それで登録(インストール)して、しかるべきレジストリキーを登録したりしないといけないんですよね。さらに、アプリは電子署名されていないと登録できないんです。そうしておかないと、アプリコンテナーから起動してもらえない、つまり、スタート画面から起動できないってことです。

それじゃあ、アプリのファイルをコピーしてきて、登録すればサイドローディングできるんでしょ、と思うわけです。さっそく自作したWindowsストアアプリのパッケージを、別の(アプリ開発環境をインストールしていない)Windows8にコピーし、手動で登録してみます。登録するには、Windows PowerShellを管理者権限で起動し、Add-AppxPackageコマンドレットを使います。ところが。。。

Addappxpackage
この通り、登録は失敗します。当たり前ですね。野良アプリ禁止なんですから。登録、つまりインストールが防がれる仕組みを目の当たりにできました。

ところが、これじゃぁ、開発者が自作のアプリをテストできないじゃないですか。自作アプリはWindowsストアに登録する前に起動できる必要があるわけで。そのために、開発者のテスト用インストールができる仕組みも用意されています。それが、エラーメッセージの中にも書いてある「開発者用ライセンス」です。
開発者用ライセンスが無いことを確認してみます。

Nolic_3
Get-WindowsDeveloperLicenseコマンドレットで見ると、確かに無いです。そこで、開発者用ライセンスをインストールしてみます。これには、Show-WindowsDeveloperLicenseRegistrationコマンドレットを使います。

Showlicdl_2
こんなダイアログが出てきました。[同意します]。

次に、Microsoftアカウントを入力して[サインイン]。
Showlicdlg2_6
すると。。。

Showlicdlg2_4

Showlicdlg3
いともあっさり、開発者用ライセンスが取得できました。さ~さぁ~、いよいよサイドローディングするぞ~。Add-AppxPackageするぞ~。

Addappxpackage_3
こんな感じでなぜか登録進捗がPowerShellウィンドの上の方に青緑背景の黄色文字で表示され、登録成功!できましたできました、人間にもこんなことできました!

Addappxpackage2_3
スタート画面にタイルが出てきましたぞ!もちろんクリックで起動できまーす。

正式なインストール方法は、以下の4つがある。

(1)Windowsストアからダウンロード

(2)VisusalStudioから(テストのために)起動。(これは、内部的にテスト用パッケージがインストールされて、それが起動される。無償で取得できる開発者用ライセンスのインストールが必要。)

(3)VisualStudioでローカル用パッケージを作成して、上記のように手動インストール(ただし開発者用ライセンスのインストールが必要)。

(4)正式なサイドローディング。(Windows8 Enterprise Editionで、Active Directoryドメインに参加して、ドメインのポリシーでサイドローディングが許可されており、信頼されたルート証明書機関から続く証明書で署名されたアプリをインストール)

まとめると、

メトロアプリはOSのアプリコンテナーから起動する必要があり、そのためには登録(インストール)が必要。Windowsストアで認証されていないアプリのインストールには、開発者用ライセンスが必要。

最後に、脱獄方法のまとめ。

(1)PowerShellのShow-WindowsDeveloperLicenseRegistrationコマンドレットで開発者用ライセンスをインストール

(2)PowerShellのAdd-AppxPackageコマンドレットで野良アプリを登録(インストール)

これだけ。

もちろんこれはアプリ開発者のテスト用なので、自分が自信を持って信頼できるアプリ以外は入れないこと!変な野良アプリを入れてウィルスにかかったり個人情報が漏えいしたりその他大変なことが起こっても誰も助けてくれないので、デスクトップアプリ同様にウィルスチェッカーを入れるなどの自己防衛が必須となるっすよ。

ちなみに、以下のような改造による脱獄は、やる意味もないし、もしできたとしてもライセンス違反となるのでご注意を。

(1)正式なインストールなしで動くようにする、つまり、アプリコンテナー相当のものを自作してアプリのexeを起動するなど

(2)正式なインストールと同じ結果を作り出す、つまり、アプリコンテナーが必要とするレジストリキー等を自力で書き込むなど

もし将来、OSの不具合を突いて、改造脱獄できるようになったとしても、その不具合を修正するパッチを充てるまではWindowsストアからのアプリインストールができなくなるなどの対策がなされるでしょうけどね。開発者用ライセンスは不要なら入れない、不要になったら削除するのが望ましいです。

Windowsストアアプリは、安全なアプリしかインストール&起動できないので、安心してWindows8をエンジョイできますね。

| | コメント (3) | トラックバック (0)

« 2012年8月 | トップページ | 2013年2月 »