愛鋒貝

 找回密碼
 立即注冊(cè)

只需一步,快速開始

扫一扫,极速登录

查看: 600|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

IOS Theos Tweak 之 HelloWorld

[復(fù)制鏈接]

1465

主題

1527

帖子

6083

積分

Rank: 8Rank: 8

跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2023-2-26 06:22:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

一鍵注冊(cè),加入手機(jī)圈

您需要 登錄 才可以下載或查看,沒有帳號(hào)?立即注冊(cè)   

x
一、目標(biāo)

Theos是什么?
是一套跨平臺(tái)的開發(fā)工具套件,不僅可以開發(fā)Ios,Mac、Windows和Linux也可以的哦,開源免費(fèi)。
Tweak是什么?
可以理解成動(dòng)態(tài)鏈接庫,有搞過Windows下dll注入的同學(xué)應(yīng)該可以秒懂了。Android的同學(xué)可以把它理解成IOS下的Xposed。
HelloWorld是什么?
是萌新程序員的信仰,在一個(gè)平臺(tái)寫下HelloWorld,證明我來了。
二、步驟

Mac下安裝Theos

1、檢測是否有 /opt目錄,沒有就新建一個(gè)
# 先切換到root權(quán)限
sudo su
cd /
mkdir opt
cd /opt2、 在新建的/opt目錄下clone項(xiàng)目源碼
git clone --recursive https://github.com/theos/theos.git3、打開 ~/.bash_profile文件,添加以下四行
# theos
export THEOS=/opt/theos
export PATH=$THEOS/bin:$PATH
# iPhone手機(jī)的ssh地址
export THEOS_DEVICE_IP=localhost
export THEOS_DEVICE_PORT=22224、按照 之前的 Ios逆向環(huán)境搭建 (一) 配置好 SSH。
是的就這樣就夠了。 (可能還需要 ldid 和 dpkg-deb,用brew裝下)
HelloWorld

開始創(chuàng)建一個(gè) Tweak模板
# 創(chuàng)建模板命令 nic.pl 類似新建一個(gè)空工程
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個(gè)文件

  • Makefile 編譯的腳本
  • Tweak.xm 源代碼
  • control 工程描述
  • helloworld.plist 要hook的App列表
迫不及待了,我們先寫代碼吧
#import <SpringBoard/SpringBoard.h>

// hook 了 SpringBoard類的 applicationDidFinishLaunching 方法,
// 具體現(xiàn)象就是 進(jìn)入ios系統(tǒng)桌面之前彈出提示框
%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application {%orig;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Welcome"message:@"456 Hello world,你好世界"delegate:nilcancelButtonTitle:@"確定"otherButtonTitles:nil];[alert show];[alert release];
}

%end

// 初始化執(zhí)行
%ctor{NSLog(@"fenfei: 666 ctor!!!");%init(_ungrouped);
}編譯和安裝
make package install安裝后會(huì)自動(dòng)重啟SpringBoard,然后就會(huì)彈出我們的HelloWorld



我們?cè)僬f說這個(gè) NSLog ,這個(gè)很有用的,類似Android的 __android_log_print。 但是它從哪看呢?
Mac系統(tǒng)有個(gè)叫 控制臺(tái) 的程序,可以看到每個(gè)設(shè)備輸出的Log。



木問題,收工。
三、總結(jié)

玩Ios難點(diǎn)在哪? 不在于Arm匯編,而在于沒有設(shè)備。你起碼得需要一個(gè)Mac電腦和Iphone。
不建議裝黑蘋果,升級(jí)和鼓搗太麻煩了。 某魚搞個(gè)二手Mac Pro最低有2k的, Iphone搞個(gè)6或者6s, 有3-400的。 Mac電腦系統(tǒng)起碼要能裝 macOS Mojave 10.14.x 。 Iphone要無鎖的,最好國行,系統(tǒng)就所謂了,最好低點(diǎn) 13以下。這樣 Xcode 11.3也能玩。



醉后不知天在水,滿船清夢壓星河

-----------------------------
精選高品質(zhì)二手iPhone,上愛鋒貝APP
您需要登錄后才可以回帖 登錄 | 立即注冊(cè)   

本版積分規(guī)則

QQ|Archiver|手機(jī)版|小黑屋|愛鋒貝 ( 粵ICP備16041312號(hào)-5 )

GMT+8, 2025-2-25 14:14

Powered by Discuz! X3.4

© 2001-2013 Discuz Team. 技術(shù)支持 by 巔峰設(shè)計(jì).

快速回復(fù) 返回頂部 返回列表