|
一鍵注冊,加入手機圈
您需要 登錄 才可以下載或查看,沒有帳號?立即注冊 
x
一、目標(biāo)
Theos是什么?
是一套跨平臺的開發(fā)工具套件,不僅可以開發(fā)Ios,Mac、Windows和Linux也可以的哦,開源免費。
Tweak是什么?
可以理解成動態(tài)鏈接庫,有搞過Windows下dll注入的同學(xué)應(yīng)該可以秒懂了。Android的同學(xué)可以把它理解成IOS下的Xposed。
HelloWorld是什么?
是萌新程序員的信仰,在一個平臺寫下HelloWorld,證明我來了。
二、步驟
Mac下安裝Theos
1、檢測是否有 /opt目錄,沒有就新建一個
# 先切換到root權(quán)限
sudo su
cd /
mkdir opt
cd /opt2、 在新建的/opt目錄下clone項目源碼
git clone --recursive https://github.com/theos/theos.git3、打開 ~/.bash_profile文件,添加以下四行
# theos
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH
# iPhone手機的ssh地址
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=22224、按照 之前的 Ios逆向環(huán)境搭建 (一) 配置好 SSH。
是的就這樣就夠了。 (可能還需要 ldid 和 dpkg-deb,用brew裝下)
HelloWorld
開始創(chuàng)建一個 Tweak模板
# 創(chuàng)建模板命令 nic.pl 類似新建一個空工程
nic.pl
------------------------------[1.] iphone/activator_event[2.] iphone/application_modern[3.] iphone/cydget[4.] iphone/flipswitch_switch[5.] iphone/framework[6.] iphone/ios7_notification_center_widget[7.] iphone/library[8.] iphone/notification_center_widget[9.] iphone/preference_bundle_modern[10.] iphone/tool[11.] iphone/tweak[12.] iphone/xpc_service
# 選擇 11 iphone/tweak ,我之前裝的是 11, 最新的是 15
Choose a Template (required): 11
# 輸入工程名稱
Project Name (required): helloworld
# 輸入工程包名
Package Name [com.yourcompany.helloworld]: com.fefei.helloworld
# 作者必須是我了
Author/Maintainer Name [fenfei]: fenfei
# 要hook的程序包名,我們這里正好要hook springboard
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:
# 開發(fā)完成之后,安裝好了我們的tweak,要重啟的app名稱,一般都是我們要hook的app的主程序名稱,這里是 SpringBoard
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:
Instantiating iphone/tweak in helloworld/...
Done.這就搞定了
一共生成了4個文件
- Makefile 編譯的腳本
- Tweak.xm 源代碼
- control 工程描述
- helloworld.plist 要hook的App列表
迫不及待了,我們先寫代碼吧
#import <SpringBoard/SpringBoard.h>
// hook 了 SpringBoard類的 applicationDidFinishLaunching 方法,
// 具體現(xiàn)象就是 進入ios系統(tǒng)桌面之前彈出提示框
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&#34;Welcome&#34;message:@&#34;456 Hello world,你好世界&#34;delegate:nilcancelButtonTitle:@&#34;確定&#34;otherButtonTitles:nil];[alert show];[alert release];
}
%end
// 初始化執(zhí)行
%ctor{NSLog(@&#34;fenfei: 666 ctor!!!&#34;);%init(_ungrouped);
}編譯和安裝
make package install安裝后會自動重啟SpringBoard,然后就會彈出我們的HelloWorld
IOS Theos Tweak 之 HelloWorld-1.jpg (142.14 KB, 下載次數(shù): 143)
下載附件
2023-2-27 11:29 上傳
我們再說說這個 NSLog ,這個很有用的,類似Android的 __android_log_print。 但是它從哪看呢?
Mac系統(tǒng)有個叫 控制臺 的程序,可以看到每個設(shè)備輸出的Log。
IOS Theos Tweak 之 HelloWorld-2.jpg (105.58 KB, 下載次數(shù): 132)
下載附件
2023-2-27 11:29 上傳
木問題,收工。
三、總結(jié)
玩Ios難點在哪? 不在于Arm匯編,而在于沒有設(shè)備。你起碼得需要一個Mac電腦和Iphone。
不建議裝黑蘋果,升級和鼓搗太麻煩了。 某魚搞個二手Mac Pro最低有2k的, Iphone搞個6或者6s, 有3-400的。 Mac電腦系統(tǒng)起碼要能裝 macOS Mojave 10.14.x 。 Iphone要無鎖的,最好國行,系統(tǒng)就所謂了,最好低點 13以下。這樣 Xcode 11.3也能玩。
IOS Theos Tweak 之 HelloWorld-3.jpg (112.49 KB, 下載次數(shù): 132)
下載附件
2023-2-27 11:29 上傳
醉后不知天在水,滿船清夢壓星河
----------------------------- |
|