巷で話題のSideloadを試してみた。
JB界隈では脱獄無しのTweakとかいう新時代の幕開けみたいなものが出てきましたね。
いわゆる、「Sideload」ってやつです。
Sideloadの仕組み
(イマイチ仕組みはわかってないですが)簡単にいえば、アプリ内にdylibをぶち込んで、dylibごとIPAにしてインストールしちゃおう!って感じです。
好きなdylibを参照するためにアプリのバイナリをいじったりします。
やり方。
Macがないとダメです(Xcodeで署名するため)
仮想で組んでおくと便利だったりする(小声)
必要なもの
-
Xcode7
入れ方はぐぐってください。(丸投げ -
optool (バイナリの改変に使う)
https://github.com/alexzielenski/optool
releasesから落としてPATHの通ってるとこにでも置いといてあげてください。 -
iOS App Signer(IPAの署名するためにつかう)
https://github.com/DanTheMan827/ios-app-signer
落として好きなところに置いといてあげてください。 -
Theos-Jailed(Sideload用のTheos)
https://github.com/BishopFox/theos-jailed/
落として好きなところに(ry
※バージョンが古いせいでlibsubstrate.dylibがarm64対応してないので適宜差し替えてね。 -
HookしたいアプリのIPA
今回は、そこにあったYoutubeのIPAでやってみました。
###1.Xcodeで実機デバッグ出来るようにする(省略
Xcodeでプロジェクトを作り実機デバッグできるようにしておいてください。
Apple IDでログインしてポチポチで出来るはず。
詳しくはGoogleさんに。。
###2.IPAを解凍
unzipコマンドでもなんでも良いです。
解凍しておいてください。
unzip Youtube.ipa
解凍したら、Payloadフォルダ以外のファイルは基本的に要らないので消すなりなんなりと。。。
###3.Theos-Jailedでプロジェクト作成
Theoserお馴染みのnic.pl
でプロジェクトを作れるので省略。
初期のテンプレだとMakefile
にいろいろ書いてあるけど下を参考に書き換えてください。
include theos/makefiles/common.mk
ARCHS = armv7 arm64 #←追加
TWEAK_NAME = HelloWorld
HelloWorld_FILES = Tweak.xm fishhook/fishhook.c #これだけでOK!
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
次にTweak.xm
を適当に。。。
#include "fishhook/fishhook.h"
%hook YTAppDelegate
-(BOOL)application:(id)arg1 didFinishLaunchingWithOptions:(id)arg2{
bool r=%orig;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"HelloWorld" message:@"Hello non jailbreak tweak! ;)" delegate:nil cancelButtonTitle:@"┐(ツ)┌" otherButtonTitles:nil];
[alert show];
return r;
}
%end
###4.make
る
ふつーにmake
してあげてください。
すると、同じディレクトリのobj
フォルダにHelloWorld.dylib
ができてるはずです。
###5.アプリのバイナリにdylibのパスを設定
2で解凍したディレクトリに移動し
optool install -c load -p @executable_path/HelloWorld.dylib -t Payload/YouTube.app/YouTube
optool install -c load -p @executable_path/<dylibファイル名> -t <バイナリの位置>
###6.dylibをPayload/<アプリ名>.app/
にコピー
4でできたdylibをPayload/<アプリ名>.app/
にコピーしてあげてください。
cp obj/HelloWorld.dylib ../../sideload/Payload/YouTube.app
cp <dylibへのパス> <IPAを解凍したディレクトリ>/Payload/<アプリ名>.app/
そうしたら、zipコマンドでipaに戻してあげましょう。
zip -r Youtube-Hacked.ipa Payload/
###7.iOS App SignerでIPAに署名
落としておいた、iOS App SignerでIPAに署名します。
プロビジョニングプロファイルのところは、1で作ったXcodeのプロジェクトを選択してください。
あとは適当に。。
そうしたら、「Start」を押すと、署名済みIPAの保存場所を聞いてくるので適当に設定してあげてください。
###あとは、IPAをインストールするだけ!
IPAをインストールすれば完了です。(・∀・)
Hello World ;) pic.twitter.com/cMWauahScQ
— すり身焼き㌠ (@ChikuwaJB_blog) 2016年5月20日
##非脱獄で出来るのが面白いところ!
IPAを改変し、オレオレ(開発用)署名で動かすという凄い裏ワザ感。。
質問等があったらコメントにドンドン書いてもらって大丈夫です(´∀`)
ではでは~