Share

【Tweak作成講座】Theos編 第一回

_(-ω-`。) ドモドモちくわです。

Minicode編はどうした?

↑↑↑キニシナイ

Theos環境構築済みとします

今回はPCと端末をSSHでつないでやりたいと思います!

使うもの

  • FileZilla とか SCPできるもの
  • Teraterm とか SSHできるもの
  • Theosの入ったiDevice(今回はiOS8 64bit)

キャプチャ

キャプチャ

TeratermとFileZillaでRootでログインしておいてください

※Rootでログインしてください

スポンサーリンク

下準備

[code]

ChikuwanoiPod:/private/var/mobile root# $THEOS/bin/nic.pl
NIC 2.0 – New Instance Creator
——————————
[1.] iphone/application
[2.] iphone/library
[3.] iphone/preference_bundle
[4.] iphone/tool
[5.] iphone/tweak
Choose a Template (required): 5[Enter]
Project Name (required): HelloWorld[Enter]
Package Name [com.yourcompany.helloworld]: com.chikuwa.HelloWorld[Enter]
Author/Maintainer Name [System Administrator]: Chikuwa[Enter]
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:[Enter]
[iphone/tweak] List of applications to terminate upon installation (space-separated, ‘-‘ for none) [SpringBoard]:[Enter]
Instantiating iphone/tweak in helloworld/…
Done.

[/code]

となったら準備完了です!

スポンサーリンク

メイン

あらかじめプロジェクトのフォルダに移動

[code]

ChikuwanoiPod:/private/var/mobile root# cd helloworld
ChikuwanoiPod:/private/var/mobile/helloworld root#

[/code]

Filezillaでプロジェクトのフォルダに移動。

キャプチャ

初期だとこうなっているはずです。

Tweak.xmを右クリックし、「表示/編集」を押すとエディタが開くはず。

スクリーンショット (77)

Atom民なんでAtomで開いていますが、なんでもおkです。

書いてある内容をすべて消し、

[code]

%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application {
%orig;
UIAlertView *alert = [[UIAlertView alloc] init];
alert.title = @”HelloWorld”;
alert.message = @”Launched SpringBoard”;
[alert addButtonWithTitle:@”OK”];
[alert show];
}

%end

[/code]

に書き換えてください。

スクリーンショット (78)

こんな感じです。そしたら保存しFileZillaに戻ると、

キャプチャ

こんなのが出ているのではいを押して転送してください。

毎回編集したらこの作業をしないとだめですよ!

さっき書いた内容を少し解説。

[code]

%hook SpringBoard //SpringBordをHookしますよ!

-(void)applicationDidFinishLaunching:(id)application { //SpringBordのなかのapplicationDidFinishLaunchingという関数をいじります
%orig; //オリジナルの動作に置き換えられます。
UIAlertView *alert = [[UIAlertView alloc] init];//ここからはアラート文
alert.title = @”HelloWorld”;
alert.message = @”Launched SpringBoard”;
[alert addButtonWithTitle:@”OK”];
[alert show];
}

%end //SpringBoardのHookおわり

[/code]

どうでしょうなんとなくわかった気がしませんか?( ´∀` )

applicationDidFinishLaunchingん~なんてわかりやすい名前なんだ(笑)

ではコンパイルしていきましょう!

Teratermで「make package」と打ちましょう

[code]

ChikuwanoiPod:/private/var/mobile/helloworld root# make package
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak HelloWorld…
Preprocessing Tweak.xm…
Compiling Tweak.xm…
Linking tweak HelloWorld…
Stripping HelloWorld…
Signing HelloWorld…
Making stage for tweak HelloWorld…
dpkg-deb: building package `com.chikuwa.helloworld’ in `./com.chikuwa.HelloWorld_0.0.1-1_iphoneos-arm.deb’.
ChikuwanoiPod:/private/var/mobile/helloworld root#

[/code]

ChikuwanoiPod:/private/var/mobile/helloworld root# make package
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak HelloWorld…
Preprocessing Tweak.xm…
Compiling Tweak.xm…
Linking tweak HelloWorld…
Stripping HelloWorld…
Signing HelloWorld…
Making stage for tweak HelloWorld…
dpkg-deb: building package `com.chikuwa.helloworld’ in `./com.chikuwa.HelloWorld_0.0.1-1_iphoneos-arm.deb’.
ChikuwanoiPod:/private/var/mobile/helloworld root#

太字のところが出ればおkです。

そしたらDebが生成されているのでそれをインストールしてリスプリングっといいたいところですが、便利なコマンドがあって「make install」と打つと最新バージョンのdebをインストールしてくれます。

[code]

ChikuwanoiPod:/private/var/mobile/helloworld root# make install
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
install.exec “dpkg -i “./com.chikuwa.HelloWorld_0.0.1-1_iphoneos-arm.deb””
dpkg – warning: downgrading com.chikuwa.helloworld from 0.0.1-3 to 0.0.1-1.
(Reading database … 21837 files and directories currently installed.)
Preparing to replace com.chikuwa.helloworld 0.0.1-3 (using …/com.chikuwa.HelloWorld_0.0.1-1_iphoneos-arm.deb) …
Unpacking replacement com.chikuwa.helloworld …
Setting up com.chikuwa.helloworld (0.0.1-1) …
install.exec “killall -9 SpringBoard”
ChikuwanoiPod:/private/var/mobile/helloworld root#

[/code]

打つと勝手にリスプリングするはずです。

そうしたら

画面にアラートが出るはず!

あれ?

でない。。。。

出た人もいるかもしれません。

何がいけないか。

それは

64bitでコンパイルしていないから

64bit端末でコンパイルしただけでは64bit仕様にはならないのです(´;ω;`)

そこでMakefileを編集し64bitでコンパイルします。

キャプチャ

このファイルを開いて編集します。

そしたら一行目

[code]

ARCHS = armv7 arm64

[/code]

を追加してください。

キャプチャ

そしたら転送してください。

そうしたら「make package」してみてください。

なぬ。

[code]

ChikuwanoiPod:/private/var/mobile/helloworld root# make package
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak HelloWorld…
Preprocessing Tweak.xm…
Compiling Tweak.xm…
Linking tweak HelloWorld…
Undefined symbols for architecture armv7:
“_OBJC_CLASS_$_UIAlertView”, referenced from:
objc-class-ref in Tweak.xm.b50de7d0.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [obj/HelloWorld.dylib.64873355.unsigned] Error 1
make[1]: *** [internal-library-all_] Error 2
make: *** [HelloWorld.all.tweak.variables] Error 2
ChikuwanoiPod:/private/var/mobile/helloworld root#

[/code]

えらった(´;ω;`)

そうしたらもう一回Makefileの編集

キャプチャ

スクリーンショット (81)

HelloWorld_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

のあいだに、

[code]

HelloWorld_FRAMEWORKS = UIKit

[/code]

を追加してやってください。

保存し、転送し、「make package」

[code]

ChikuwanoiPod:/private/var/mobile/helloworld root# make package
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:43: Targeting iOS 4.0 and higher is not supported with iphone-gcc. Forcing clang.
/private/var/mobile/helloworld/theos/makefiles/targets/Darwin-arm64/iphone.mk:53: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for tweak HelloWorld…
Linking tweak HelloWorld…
ld: warning: ignoring file /private/var/mobile/helloworld/theos/sdks/iPhoneOS8.1.sdk/usr/lib/dylib1.o, missing required architecture arm64 in file /private/var/mobile/helloworld/theos/sdks/iPhoneOS8.1.sdk/usr/lib/dylib1.o (2 slices)
Stripping HelloWorld…
Signing HelloWorld…
Making stage for tweak HelloWorld…
<strong>dpkg-deb: building package `com.chikuwa.helloworld’ in `./com.chikuwa.HelloWorld_0.0.1-2_iphoneos-arm.deb’.</strong>
ChikuwanoiPod:/private/var/mobile/helloworld root#

[/code]

おおっ!

成功!

「make install」でインストールしてください。

IMG_1332

でゅおおおおおおおおおおおおおおおおおおおおおおおおおおおおお

キターーーーーーーーーーーーーーーーーー

どうでしたか?

結構簡単でした?

勉強すればもっとすごいのも作れます!(たぶん)

ぜひTweak開発を始めてみては?

生意気ながらわかっていることを書かせてもらいました。

何か間違っているところ、質問、なんでもわかる範囲なら答えるようにしたいと思います。

以下の連絡先に気軽にどうぞ~

ではでは~

関連リンク

2001年生まれの現在中学3年生の男です(・∀・) プログラミングや、Jailbreakを中心にいろいろやってます。

Share Me!