きゃらりこ日誌

2020年04月

PC・家電 / 技術

Windowsでshortcutファイル(plist)の中身を見る方法

iOSアプリ「シュートカット」の解説サイト、「ショートカットApp アクションリファレンス」を執筆中なのですが、Appleが詳細なドキュメントを公開していないため、アプリの動作や仕組みを解析しながら書く羽目になってしまいました。
そんな中、レシピをshortcutファイルとして書き出せる機能があることを知りました。
ちなみにshortcutファイルを読み込む機能は、セキュリティ上の都合で廃止されてしまったそうです。
解析の都合で、shortcutファイルの中身を確認する必要に迫られ、どうにかして中を覗けないか調べてみました。

Windowsでplistの中身を覗く方法

最近、この手のファイルの中身はXML形式だったり、JSON形式だったりすることが多いのでテキストエディタで開いてみましたが、残念ながらバイナリ形式でした。
ただ先頭の文字が「bplist」だったので、これを手掛かりにして調べていったところ、shortcutファイルは、macOS・iOSで使われているバイナリ形式のプロパティリスト(plist)ファイルであることがわかりました。
macOSにはplutilコマンドが存在し、これを使うとバイナリ形式のplistをテキスト形式のplistに変換することができるそうです。
そこでWindowsでplistを読み書きする方法を検索してみましたが、情報が見当たりませんでした。
しかしiTunesのWindows版はmacOS版のソースコードと共通であるという話を聞いたことがあり、またiTunesやiPhoneアプリではplistが多用されていることを思い出しました。
もしかしたら…と思い、パソコンのハードディスクの中を探してみたところ、iTunesと一緒にインストールされている「Apple Application Support」の中に、plutil.exeがあるのを見つけました。
試しに、何のオプションもつけずにplutil.exeを実行してみたところヘルプが表示されました。
どうやら、macOSのplutilコマンドのWindows版のようです。
plutilコマンドの使い方を説明しているサイトを参照しながらいろいろやってみたところ、テキスト形式のplistに変換することができました。
またJSON形式や、XML形式(テキスト形式のplistファイル)に変換したり、相互変換することもできました。
ただ中身を見るには、可読性を考えるとXML形式が一番読みやすいと思います。
なお使い方はmacOS版のplutilと同じなので、説明は割愛します。

ちなみに、shortcutファイル(バイナリ形式のplist)をXMLファイルに変換するコマンドは以下の通りです。

"%COMMONPROGRAMFILES(x86)%\Apple\Apple Application Support\plutil.exe" -convert xml1 "%USERPROFILE%\Desktop\○○.shortcut" -o "%USERPROFILE%\Desktop\○○.xml"

XMLに変換したshortcutファイル

なお、後述のApple Application Supportを探っていた時に見つけたのですが、同じ場所にdefaults.exe(macOSのdefaultsコマンドと同じもの)もありました。
これを使えば、plistをバイナリのまま書き換えることができるのかな?

Apple Application Supportの正体

ついでにApple Application Supportフォルダの中身を、わかる範囲でざっくり調べてみました。
内容から察すると、どうやら「Apple Application Support」はApple製のソフトが共通で使っているライブラリ群のようです。
要するに、Microsoftの「Visual Basicランタイム」・「Visual C++ランタイム」・「.NET Framework」と同じようなものですね。


Apple Application Supportフォルダの中身

  • APSDaemon.exe - Apple Push通知サービス関連。
  • defaults.exe - macOSのdefaultsコマンドと同じもの。plistを直接読み書きするときに使う。
  • distnoted.exe - iTunesとiPod・iPhone・iPadとの同期で使われる。
  • plutil.exe - 前述の通り、macOSのplutilコマンドと同じもの。
  • secd.exe - macOSのsecdと同じもの。名称はApple Security Manager。2ファクタ認証やキーチェーン(Appleデバイス共通のパスワード管理システム)の同期などで使われる。
  • VersionCheckMe.exe - Apple Application Supportのバージョンチェック用。
  • YSIconStamper.exe - ファイル名・ヘルプの内容から推測すると、アイコンを変更するために使うものか?
  • YSLoader.exe - iTunesとiPod・iPhone・iPadとの同期で使うらしい。
  • CFNetwork.dll - macOS・iOSのネットワーク関係のフレームワーク。
  • libxml2.dll - XMLを扱うときに使われるライブラリ。
  • zlib1.dll - ファイルの圧縮・展開を行うライブラリ。
  • SQLite3.dll - 軽量データベース。
  • WebKit.dll - macOS・iOSの標準ブラウザSafariで使われているレンダリングエンジン。

このほかにも、さまざまなファイルがありますが、ほとんどは何らかのフレームワーク・ライブラリでした。


[ | この記事のURL ]