Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

非脱獄向けTweak(?)巷で話題のSideloadを試してみたらかなりの可能性を感じた話。

巷で話題の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コマンドでもなんでも良いです。
解凍しておいてください。

IPAファイルの解凍
unzip Youtube.ipa

解凍したら、Payloadフォルダ以外のファイルは基本的に要らないので消すなりなんなりと。。。

3.Theos-Jailedでプロジェクト作成

Theoserお馴染みのnic.plでプロジェクトを作れるので省略。
初期のテンプレだとMakefileにいろいろ書いてあるけど下を参考に書き換えてください。

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を適当に。。。

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
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に戻してあげましょう。

IPA化
zip -r Youtube-Hacked.ipa Payload/

7.iOS App SignerでIPAに署名

落としておいた、iOS App SignerでIPAに署名します。
プロビジョニングプロファイルのところは、1で作ったXcodeのプロジェクトを選択してください。
iOS App Signer
あとは適当に。。
そうしたら、「Start」を押すと、署名済みIPAの保存場所を聞いてくるので適当に設定してあげてください。

あとは、IPAをインストールするだけ!

IPAをインストールすれば完了です。(・∀・)


非脱獄で出来るのが面白いところ!

IPAを改変し、オレオレ(開発用)署名で動かすという凄い裏ワザ感。。
質問等があったらコメントにドンドン書いてもらって大丈夫です(´∀`)
ではでは~

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What are the problem?