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

      2016/10/20


連載シリーズ第7回目となる今回は、現在のJailbreak Tweakを作る上で最もポピュラーな「theos」について紹介します。


脱獄用のTweakを作りたいと考えている方は、前回までの復習をしておくといいでしょう!

iOS development

theosインストール方法


必要な物は、Mac OS XがあればOKです(事前にXCodeCommandLineTooldpkgをインストール)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の作成方法

【脱獄アプリ開発】第11回新しいtheosのインストールと簡単なTweakの作成方法
今回は、以前紹介したtheosの構築方法が古いものになってしまったので、新しくなったtheosと簡単なTweakの作成方法を紹介いたします。theosを構築...






Theos install script

しかし、こちらのシェルスクリプトを利用すれば、簡単に構築することができます。

Download:install_theos.sh

右クリックからリンク先を保存してください。

Download後は、ターミナルでシェルスクリプトを実行すればOKです。

cd ~/Downloads
sudo sh install_theos.sh


/opt/theosに必要なパッケージがインストールされます。

参考:Beginning Jailbroken iOS Development - Getting The Tools | brandontreb.com

EmacsでTheosのディレクトリを登録


次に使いやすくなるように「.bash_profile」へディレクトリを登録しておきます。ターミナルを開いて、以下のコマンドを入力します。

 cd ~
emacs .bash_profile

export THEOS=/opt/theos

ctrl+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」をインストールしておくと、そのディレクトリで右クリック→ターミナルで開くということが出来るのでオススメします。

[Mac] 「XtraFinder」と「BetterTouchTool」で武装したFinderは最強かもしれない | Tools 4 Hack

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」というフォルダができているかと思います。


theos:theos本体へのシンボリックリンク
control:debパッケージにする際のcontrolファイル
Makefile:パッケージをビルドするときに必要な物を記したファイル
Tweak.xm:プログラムを書くためのファイル
WelcomeWagon.plist:Tweakの対象を記したファイル

このような構成になっています。

このまま作業を行なってもいいんですが、Tweak.xmを開くとSyntaxHighlightされていない状態でXcodeが開かれます。そこで、見やすいように一手間加えてあげます。

ターミナル上で以下のコマンドを入力

mv Tweak.xm Tweak.mm; ln -s Tweak.mm Tweak.xm

5.プログラムを記述する

Tweak.xmを開き、全て削除し以下のコードをコピペして下さい。

#import <SpringBoard/SpringBoard.h>

%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

これは、SpringBoardを%hookしてSpringBoardが起動(Respring時)にUIAlertViewを表示させるといった簡単なSampleです。

%hook クラス名 %orig; で、そのオリジナルの動作を行わせ、その後にコードを追加することで通常の動作に自分が行いたい動作を加えることができるといったものです。

最後は、%endで終了することを知らせます。

seekpoint: theos

[email protected]_plusさんの記事を参照

6.ビルドしてみる

それでは実際にビルドしてみましょう。

ターミナル(welcomewagonディレクトリ)上で「make package」と入力すると、パッケージを作成することができます。

おそらくエラーが出たかと思います。

make[2]: *** [obj/WelcomeWagon.dylib.ba964c90.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [WelcomeWagon.all.tweak.variables] Error 2

7.Makefileの編集

一番上に「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」と記述してください。


このような感じです。もう一度「make package」してみましょう!

今度は出来たかと思います。

8.debパッケージをインストール

初めに、sshで接続してあげる必要があります。

ssh [email protected]
alpine(デフォルトの場合)

これで、登録するかどうか聞かれるので「yes」と入力して下さい。もし上手くいかない場合は、隠しファイル表示切り替えアプリ HiddenSwitchをインストールして、「~/.ssh/known_hosts」をテキストエディタで開き、全て削除してください。

また、OS Xで自動的に作成される.DS_Storeを作成しない環境にしておくと、後々役立つかと思いますので、合わせてやっておきましょう。

Macで.DS_Storeファイルを作らない方法&削除ツール | BLANCBOOTH

では改めて、「make install」とターミナル上で入力→パスワードを3回聞かれますので、設定したrootパスワードを入力して下さい。

インストールが完了すると、以下のようにアラートが表示されます。


これで初めてtheosで作った自作Tweakが出来ました!

その他のTips


オリジナルのものを作るにあたって

GitHubやStack Overflow、Googleなどでいろいろと調べてみましょう。参考になるものが、たくさんあります。

また、自分のようにプログラミング初心者の場合、Objctive-Cの基本的な知識が無いと思わぬ問題を引き起こすものを作ってしまう可能性があります。

ネットの断片的な情報より纏まった書籍で勉強するのがお勧めです。

Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)  Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)

Amazon

現在は、こちらの書籍で復習を兼ねて勉強しています。今後iOSアプリを作りたいとなった場合にも役立つものになるかと思います。

iOS 7がリリースされてどうなるかわかりませんが、基本的な部分は変わらないので、役に立つ面白いものができるように頑張って行きましょう!

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でWillFeelTipsをフォローしよう!


  関連記事

【脱獄アプリ開発】第11回新しいtheosのインストールと簡単なTweakの作成方法

今回は、以前紹介したtheosの構築方法が古いものになってしまったので、新しくな ...

BadgeCleaner - 個別にアプリのバッジを消すiOS 8/9対応のTweakを作成しました

iPhoneやiPad、iPod touchなどの脱獄したデバイス向けに、アプリ ...

【脱獄アプリ開発】第6回 iOSOpenDevを使ったSBSettingsトグルの作り方

今回は、iOSOpenDevを使ってSBSettingsのトグルを作る方法を紹介 ...

【脱獄アプリ開発】第10回ichitasoリポジトリ変更のお知らせとCydiaダウンロードカウンタの設置方法

Cydia用のリポジトリが更新するたびにエラーとなってしまったため、新たにURL ...

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法

さて!連載3回目です。今回は、自分で作ったdebパッケージをCydia Repo ...

 - iOS development