【脱獄アプリ開発】第7回theosのインストールから簡単なTweakの作成までのガイドライン

連載シリーズ第7回目となる今回は、現在のJailbreak Tweakを作る上で最もポピュラーな「theos」について紹介します。
脱獄用のTweakを作りたいと考えている方は、前回までの復習をしておくといいでしょう!theosインストール方法
必要な物は、Mac OS XがあればOKです(事前にXCodeとCommandLineTool、dpkgをインストール)iOSデバイス上でも出来ないことはないですが、実用的に考えるとオススメできません。iOS側の準備としては、開発機(出来ればiPhone 4)があるといいでしょう。A4デバイスなので、Limera1n exploitが使用できるのと、iOS 7にも対応しています。

- OpenSSH
- Syslog Toggle
- syslog to /var/log/syslog
- BigBoss Recommended Tools
Theos/Getting Started – iPhone Development Wiki
通常のインストール方法は、こちらを参考にしてもらうとわかりますが、日本語で解説しているところはなく、意外と敷居が高く感じられます。
2016/3/19 追記
新しくなったtheosに対応した記事を書きましたので、そちらをご覧ください。
Link:【脱獄アプリ開発】第11回新しいtheosのインストールと簡単なTweakの作成方法
しかし、こちらのシェルスクリプトを利用すれば、簡単に構築することができます。
Download:install_theos.sh
右クリックからリンク先を保存してください。
Download後は、ターミナルでシェルスクリプトを実行すればOKです。
cd ~/Downloads
sudo sh install_theos.sh

参考:Beginning Jailbroken iOS Development – Getting The Tools | brandontreb.com
EmacsでTheosのディレクトリを登録
次に使いやすくなるように「.bash_profile」へディレクトリを登録しておきます。ターミナルを開いて、以下のコマンドを入力します。cd ~
emacs .bash_profile
export THEOS=/opt/theosctrl+x ctrl+sで保存→ctrl+x ctrl+cでEmacsの終了
これにより、ターミナル上で「$THEOS」と入力すると「/opt/theos」ディレクトリを指定したことになりました。
(次回ターミナルを開いた時に有効)
参考:Beginning Jailbroken iOS Development – Building And Deployment | brandontreb.com
サンプルTweakの作成
Beginning Jailbroken iOS Development – Your First Tweak | brandontreb.comこちらで紹介されているTweakを作ってみましょう。初めに、Tweakを作成するためのフォルダを作っておき、そのディレクトリの中で管理していくといいでしょう。
「XtraFinder」をインストールしておくと、そのディレクトリで右クリック→ターミナルで開くということが出来るのでオススメします。
1.ターミナルで「$THEOS/bin/nic.pl」と入力
NIC 2.0 – New Instance Creator
——————————
[1.] iphone/application
[2.] iphone/cydget
[3.] iphone/dashboardx_widget
[4.] iphone/framework
[5.] iphone/library
[6.] iphone/notification_center_widget
[7.] iphone/preference_bundle
[8.] iphone/sbsettingstoggle
[9.] iphone/tool
[10.] iphone/tweak
Choose a Template (required):
このような表示になりますので「10」と入力
2.Project Nameを「WelcomeWagon」とします
続けてPackage Nameを決めます。通常は自分のドメインを反対から入力し、最後に小文字でプロジェクト名を付けます(例.com.ichitaso.welcomewagon)これがCydiaのパッケージIDになります。
Author/Maintainer Nameは、ローマ字で自分の名前やニックネームを入力します。Package Nameを「com.ichitaso.welcomewagon」としていた場合、自動的に「ichitaso」となります。
3.MobileSubstrate Bundle filter [com.apple.springboard]
ここではTweakを選択したので、SpringBoardを対象としたTweakに自動的になりますので、そのままreturnを押して構いません。また後から追加編集することができます。
4.Tweak.xmの編集
Tweak作成用のディレクトリで上記コマンドを入力後、そこに「welcomewagon」というフォルダができているかと思います。

control:debパッケージにする際のcontrolファイル
Makefile:パッケージをビルドするときに必要な物を記したファイル
Tweak.xm:プログラムを書くためのファイル
WelcomeWagon.plist:Tweakの対象を記したファイル
このような構成になっています。
このまま作業を行なってもいいんですが、Tweak.xmを開くとSyntaxHighlightされていない状態でXcodeが開かれます。そこで、見やすいように一手間加えてあげます。
ターミナル上で以下のコマンドを入力
mv Tweak.xm Tweak.mm; ln -s Tweak.mm Tweak.xm5.プログラムを記述する
Tweak.xmを開き、全て削除し以下のコードをコピペして下さい。
#import <SpringBoard/SpringBoard.h>これは、SpringBoardを%hookしてSpringBoardが起動(Respring時)にUIAlertViewを表示させるといった簡単なSampleです。
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome"
message:@"Welcome to your iPhone Brandon!"
delegate:nil
cancelButtonTitle:@"Thanks"
otherButtonTitles:nil];
[alert show];
[alert release];
}
%end
%hook クラス名 %orig; で、そのオリジナルの動作を行わせ、その後にコードを追加することで通常の動作に自分が行いたい動作を加えることができるといったものです。
最後は、%endで終了することを知らせます。
詳しい内容は、@r_plusさんの記事を参照
6.ビルドしてみる
それでは実際にビルドしてみましょう。
ターミナル(welcomewagonディレクトリ)上で「make package」と入力すると、パッケージを作成することができます。
おそらくエラーが出たかと思います。
make[2]: *** [obj/WelcomeWagon.dylib.ba964c90.unsigned] Error 17.Makefileの編集
make[1]: *** [internal-library-all_] Error 2
make: *** [WelcomeWagon.all.tweak.variables] Error 2
一番上に「ARCHS = armv7」、次に「export THEOS_DEVICE_IP=自分のWi-Fi IPアドレス」、「WelcomeWagon_FILES = Tweak.xm」の下に「WelcomeWagon_FRAMEWORKS = UIKit」を追記しましょう。
追記:64bitのCPU(iPhone 5sやiPad mini 2)に対応させる時は「ARCHS = armv7 arm64」と記述してください。

今度は出来たかと思います。
8.debパッケージをインストール
初めに、sshで接続してあげる必要があります。
ssh [email protected]
alpine(デフォルトの場合)
これで、登録するかどうか聞かれるので「yes」と入力して下さい。もし上手くいかない場合は、隠しファイル表示切り替えアプリ HiddenSwitchをインストールして、「~/.ssh/known_hosts」をテキストエディタで開き、全て削除してください。alpine(デフォルトの場合)
また、OS Xで自動的に作成される.DS_Storeを作成しない環境にしておくと、後々役立つかと思いますので、合わせてやっておきましょう。
Macで.DS_Storeファイルを作らない方法&削除ツール | BLANCBOOTH
では改めて、「make install」とターミナル上で入力→パスワードを3回聞かれますので、設定したrootパスワードを入力して下さい。
インストールが完了すると、以下のようにアラートが表示されます。
その他のTips
オリジナルのものを作るにあたってGitHubやStack Overflow、Googleなどでいろいろと調べてみましょう。参考になるものが、たくさんあります。
また、自分のようにプログラミング初心者の場合、Objctive-Cの基本的な知識が無いと思わぬ問題を引き起こすものを作ってしまう可能性があります。
ネットの断片的な情報より纏まった書籍で勉強するのがお勧めです。
![]() | Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library) ![]() | |
iOS 7がリリースされてどうなるかわかりませんが、基本的な部分は変わらないので、役に立つ面白いものができるように頑張って行きましょう!