愛鋒貝

 找回密碼
 立即注冊

只需一步,快速開始

扫一扫,极速登录

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

IOS Theos Tweak 之 HelloWorld

[復(fù)制鏈接]

1465

主題

1527

帖子

6083

積分

Rank: 8Rank: 8

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

一鍵注冊,加入手機圈

您需要 登錄 才可以下載或查看,沒有帳號?立即注冊   

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:@"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安裝后會自動重啟SpringBoard,然后就會彈出我們的HelloWorld



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



木問題,收工。
三、總結(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也能玩。



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

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

本版積分規(guī)則

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

GMT+8, 2025-2-25 11:23

Powered by Discuz! X3.4

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

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