Sideload とは
::: tip Sideload とは
サイドローディングとは、アプリケーションストアを通じてアプリの配布や管理を行っているシステムにおいて、正規のアプリケーションストアを経由せずにアプリを入手し、インストールすることである。
:::
これは最近の脱獄にも使われており、UncoverやTAURINEも Sideload を使って自己署名を使ってアプリをインストールし、そのアプリから脱獄をおこなう仕組みになっている。
Sideload 自体は公式の機能であるので何ら違法性はないのだが、開発者でないアカウントの場合はインストールする際の署名の有効期限が七日しかないという制約がある。開発者アカウントの場合は一年間有効なのだが、開発者になるためには年間 12000 円程度かかるので、このためだけにわざわざ開発者になる必要はない。
で、ここで Unc0ver や TAURINE が自己署名でインストール可能なのはそれらが署名されていない IPA であり、自己署名可能だからである。
AppStore からインストールした IPA には既にアプリ開発者の署名がされているため、それらに更に署名を施すことはできない。つまり、X というアプリを購入した A くんの iPhone や iTunes から IPA を抜き出し、それを B くんの署名で B くんの iPhone にインストールすることはできない。
要するに、海賊行為はできないようになっているのである。
署名の解除
が、署名を解除する方法は存在する。もちろん普通の状態ではできない。インストールされたアプリから署名を解除するにはデバイスが脱獄されている必要がある。
脱獄されたデバイスから署名を解除した IPA をダンプする方法はいくつかあります。
dumpdecrypted
セキュリティ専門家の Stegen Esser 氏が開発したダンプツール。
流石に最近は動かないのではないだろうか。
Clutch
iOS10 くらいまでは使えていた覚えがあるダンプツール。
最近は使えないイメージがある。
Rasticrac
Clutch が使えなくなった後に使っていたダンプツール。
最近、公開されていないイメージがある。
bfinject
Rasticrac が消滅した後にしばらく使っていたダンプツール。
iOS13 くらいまでは動いていたけど最近はご無沙汰している。
bfdecrypt
bfinject を利用したダンプツール。
多分 iOS14 でも動く
Clutch2
Clutch が進化したやつだけど、最終コミットが 8 年前なのでもう動かなさそう。
CrackerXI+
現状最もオススメできる IPA 復号ツール。
当たり前だけど、海賊行為には利用しないこと。
標準レポジトリにはないのでAppCakeをタップして追加しよう。
で、ただインストールしただけだと動かないらしいので CrackXI+をインストールする前に、
- AppSync Unified
- 署名のないアプリをインストールすることができるようにする
- New Term 2
- 必要かどうかはわからんけど、なんか書いてあった
を先にインストールしておくこと。そうでないと CrackerXI+が動作しない。また、将来的に必要になるので以下のツールもインストールしておくことを推奨する。
- Apple File Conduit “2” (iOS 11+, arm64)
- root 領域へのアクセスを許可する
- Filza File Manager
- Web サーバを立てられる便利なユーティリティツール
::: tip インストール順を間違えた場合
先に CrackerXI をインストールしてしまっていた場合には CrackerXI を再インストールすれば良い。
:::
CrackerXI+の使い方
単に起動して署名解除をしようとするとEnable CrackerXI hook in settings tab.
と表示されるのでSettings
から設定を更新しよう。
ここでCrackerXI hook
を有効化します。
有効化しているとちゃんと動作します。このときYES, Full IPA
を選択します。
アプリを選択すると一度画面が切り替わったあとで再びCrackerXI+
がひらきます。
こんな表示がでたらダンプは成功です。
ダンプした IPA をコピー
ダンプした IPA は/var/mobile/Documents/CrackerXI
の中に保存されているので、それをパソコンにコピーします。
これはFilza File Manager
のWebDAV Server
の機能を使えば簡単です。
Filze File Maanger
をひらいたら下にある歯車マークを押します。
そこでEnable WebDAV Server
を有効化します。更に下を見ると
Listening at https://192.168.1.13:11111
と書いてあるので、パソコンでそのアドレスにアクセスします。
::: tip Listening アドレスについて
この値は人によって異なるのでちゃんと自分の表示されている値を確認してください。
:::
URL にアクセスするとこのようにデバイスの内部データにアクセスできます。
/var/mobile/Documents/CrackerXI
に移動するとダンプした IPA があることがわかります。
ダウンロードしたいクリックすると以下のような画面に変わります。
ここでDownload
を押せば IPA ファイルがデバイスからパソコンにコピーされます。
ここまでの流れ
さて、ここまでできれば Sideload 用の IPA は用意できました。
しかし、よく考えるとここまでの一連の流れは意味がないことがわかると思います。
というのも、インストールされたアプリの署名を解除して自己署名でインストールする意味がないからです。それなら最初から署名の期限もない AppStore 公式の署名を使えばよいではないかと。
なので、単にダンプした IPA をインストールするのではなく、IPA にdylib
を同梱します。
dylib とは
dylib
とは超簡単に言うと実行時にアプリケーションのバイナリが参照するライブラリファイルのことです。
これを同梱するとどんな意味があるかというと、dylib
に何らかの処理を行うメソッドを書き込んでアプリ起動時にそれを参照するようにすれば本来のアプリの挙動とは違う動作を行なうことができるようになります。
つまり、本来は脱獄 Tweak として動作させていた処理をアプリ自身から行わせることができるということになるわけです。しかも脱獄 Tweak は署名がされていないので非脱獄環境では動作させることができませんが、Sideload であれば自己署名した IPA のバイナリが呼び出すため Sandbox の制約に引っかかることもありません。
Sideload の限界
とはいっても、全ての脱獄アプリを動作させることができるわけではありません。動作させられるのはアプリのバイナリに Hook するタイプの Tweak に限られます。
また、そのような Tweak も全てが動作するわけではなく外部フレームワークを要求するものについては一部動かすことができません。
ここからの流れ
次に必要になるのはアプリを改造するための dylib を作成することです。
しかし、これはTHEOS JAILEDの開発環境を整えたり、Objective-C や Swift などの知識が必要で一朝一夕でできる作業ではありません。
じゃあめんどくさいなあってなるところなんですが、世の中には他の開発者が作成した Tweak が山のようにあるのでそれを利用します。
要するに、
- 公開されている脱獄 Tweak のうち Sideload で利用できるものを探す
- その Tweak が Hook しているアプリを AppStore から取得する
- そのアプリの署名を解除する
- IPA に dylib を同梱した上で再度 IPA にパッケージングする
- 改造した IPA を自己署名でインストールする
という流れになります。
カスタマイズした IPA の作成方法
今回は Twitter のプロモーションのツイートを非表示にする方法を考えてみます。
Twitter のように超有名なアプリは脱獄 Tweak の開発も盛んなので、調べれば簡単に目的のものが見つかります。
脱獄 Tweak から DEB を入手する
今回は Hao Nguyen 氏が開発したTwitter No Adsを利用します。
最新のバージョンは 0.0.2 なのでそれをダウンロードします。
DEB を展開する
brew install dpkg
dpkg -x XXXXXXXX.deb YYYYYYYY
::: tip DEB 展開について
XXXXXXXX
にはダウンロードしたDEB
のファイル名、YYYYYYYY には展開した先のフォルダを指定して下さい。
フォルダがない時は自動的に作成されるので、適当で大丈夫です。
:::
すると目的のdylib
が手に入ります。
IPA に DYLIB を同梱させる
ここが一番めんどくさいところなのですが、IPA
にDYLIB
を同梱させた上でバイナリからDYLIB
を実行するようにパッチを当ててくれるツールがあります。
- iPAPatcher
- Catalina 以上であれば動作する
- おそらく今後のアップデートはなし
- iPatch
- Big Sur 以上で動作する
- 今後のアップデートもありそう
上の二つがとりあえず見つかったのですが、自分は macOS が Catalina でしたので必然的にiPAPatcher
を使うことになりました。
まったく難しい作業はなく、ダンプした署名解除済みのIPA
と先程展開したdylib
を選択するだけです
選択したらPatching.
を選択します。
IPA のサイズにもよるのですが、二分ほどで終わると思います。
IPA をインストールする
ここまでできれば作成された IPA をインストールするだけです。
いろいろツールはあるのですが、個人的にはSideloadlyが好きなのでそれをおすすめしておきます。
これ以外にも Xcode を利用する方法などいろいろあります。
完成した IPA をインストールすれば無事に全てのプロモーションが消えます。
記事は以上。