越獄開發(fā)初級(jí)之Theos環(huán)境搭建

原帖發(fā)布于2021-7-21

基本常識(shí)

  • 為什么進(jìn)行越獄開發(fā)蠢涝,以及越獄開發(fā)能做什么?
    ??實(shí)現(xiàn)一些AppStore上的app無法實(shí)現(xiàn)的功能,在越獄機(jī)器上,可以精細(xì)化控制iOS系統(tǒng)和App做批量自動(dòng)化操作禾蚕,增刪改系統(tǒng)功能等

  • 什么是Theos以及Theos用來干什么?
    ??是目前最流行的跨平臺(tái)iOS越獄開發(fā)工具包药薯,包含越獄開發(fā)所有需要的sdk和工具鏈

  • 我該怎樣選擇開發(fā)環(huán)境?
    ??為了達(dá)到最快的開發(fā)速度和生產(chǎn)速度绑洛,建議PC使用環(huán)境MacOS + XCode + Theos + VSCode,手機(jī)端使用openssh + debugsever + frida進(jìn)行相關(guān)開發(fā)童本,逆向真屯,調(diào)試,跟蹤巾陕,測(cè)試讨跟。本系列教程均基于該環(huán)境開發(fā)纪他。為此你需要準(zhǔn)備的編程技能至少包括objective-c + c + python + javascript + logos

  • 推薦學(xué)習(xí)資源?
    ??論壇: iOSRE, 看雪, 52pojie, ....

常見的越獄軟件/插件都有哪些文件類型?

  • 資源文件
  • Daemon, 可執(zhí)行程序鄙煤,為常駐于系統(tǒng)的守護(hù)進(jìn)程,用于執(zhí)行一些需要系統(tǒng)權(quán)限的操作或者實(shí)現(xiàn)底層服務(wù)
  • Tool, 可執(zhí)行程序茶袒,用于實(shí)現(xiàn)簡(jiǎn)單功能梯刚,比如lsof,wget
  • Tweak, 動(dòng)態(tài)庫薪寓,隨App啟動(dòng)自動(dòng)注入亡资,用作控制進(jìn)程
  • App, 這里開發(fā)的是Root權(quán)限執(zhí)行的App,在桌面存在圖標(biāo)

準(zhǔn)備工作

  • 確保系統(tǒng)安裝homebrew, xcode

  • 安裝Theos依賴

 brew install ldid xz
  • 下載TheOS
mkdir /opt # theos將下載到/opt/theos
git clone --recursive [url]https://github.com/theos/theos.git[/url] /opt/theos

*** 小技巧: 如果git下載比較慢又不想用vpn向叉,可以用gitee的'導(dǎo)入Github倉庫'功能锥腻,借助gitee下載***

  • 增加iOS私有函數(shù)庫
curl -LO [url]https://github.com/theos/sdks/archive/master.zip[/url]
TMP=$(mktemp -d)
unzip master.zip -d $TMP
mv $TMP/sdks-master/*.sdk /opt/theos/sdks
rm -r master.zip $TMP

簡(jiǎn)單實(shí)例

創(chuàng)建工程

執(zhí)行/opt/theos/bin/nic.pl得到如下結(jié)果

NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/activator_listener
  [3.] iphone/application_modern
  [4.] iphone/application_swift
  [5.] iphone/control_center_module-11up
  [6.] iphone/cydget
  [7.] iphone/flipswitch_switch
  [8.] iphone/framework
  [9.] iphone/library
  [10.] iphone/notification_center_widget
  [11.] iphone/notification_center_widget-7up
  [12.] iphone/preference_bundle_modern
  [13.] iphone/theme
  [14.] iphone/tool
  [15.] iphone/tool_swift
  [16.] iphone/tweak
  [17.] iphone/tweak_with_simple_preferences
  [18.] iphone/xpc_service
  [19.] iphone/xpc_service_modern
Choose a Template (required):

??這里每行都是一種工程類型,其中[14]用于生成iOS無界面的可執(zhí)行程序母谎,[16]用于生成注入App的動(dòng)態(tài)庫瘦黑。這兩個(gè)是最常用的項(xiàng)目。如果打算開發(fā)完整越獄App奇唤,仍然要借助XCode幸斥。這里按如下操作,會(huì)產(chǎn)生helloworld目錄:

Choose a Template (required): 16
Project Name (required): helloworld
Package Name [com.yourcompany.helloworld]: helloworld
Author/Maintainer Name [apple]: helloworld
[iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.apple.springboard
[iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: SpringBoard

配置手機(jī)環(huán)境

安裝tcprelay

??tcprelay將usb連接的手機(jī)端口映射到本地端口咬扇,這樣登錄手機(jī)將非常方便甲葬,同時(shí)傳文件速度非常快懈贺。遠(yuǎn)程ssh登陸到手機(jī)经窖,將會(huì)面臨網(wǎng)絡(luò)不穩(wěn)定的問題,操作比較痛苦

  • iPhone Cydia商店中安裝openssh
  • brew install libusbmuxd
  • [url]https://gitee.com/lich0/jailbroken_programming_lesson/tree/master/tools[/url]獲取tcprelay.py和usbmux.py
  • 執(zhí)行sudo python3 tcprelay.py -t 22:22 (注意因?yàn)槎丝谔?hào)小于1024所以必須root權(quán)限執(zhí)行)

期間可能遇到的問題:

  • 如果首次連接手機(jī)梭灿,會(huì)如下提示钠至,按yes即可
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is SHA256:z5N37rPCpeTKcIcm1tx3x3DnkTfeaESagZWuTYnmD3E.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
  • 如果對(duì)多臺(tái)iPhone采用上述操作,那么會(huì)產(chǎn)生knownhost沖突胎源,如下所示
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:z5N37rPCpeTKcIcm1tx3x3DnkTfeaESagZWuTYnmD3E.
Please contact your system administrator.
Add correct host key in /Users/apple/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/apple/.ssh/known_hosts:2
RSA host key for 127.0.0.1 has changed and you have requested strict checking.
Host key verification failed.

此時(shí)需要將設(shè)備公鑰加入到本機(jī)棉钧,按如下方式操作:

ssh-keyscan 127.0.0.1 >> ~/.ssh/known_hosts
  • 為避免每次登陸手機(jī)輸入密碼,按如下操作
ssh-copy-id [email]root@127.0.0.1[/email] # 密碼默認(rèn)為alpine

部署日志查看工具

git clone [url]https://github.com/rpetrich/deviceconsole.git[/url]

使用XCode編譯出deviceconsole并放到$PATH下涕蚤,這樣每次USB連接iPhone后執(zhí)行deviceconsole就能看到日志(支持iOS12及以下系統(tǒng))

開發(fā)hellowolrd

??我們的helloworld是在SpringBoard啟動(dòng)時(shí)做個(gè)彈窗宪卿。SpringBoard可以理解為桌面進(jìn)程的诵。效果為每次殺死SpringBoard進(jìn)程時(shí)會(huì)在桌面彈窗。使用VSCode打開helloworld目錄佑钾,可以看到存在4個(gè)文件:

  • control 指定生成的deb的基本信息西疤,包括包名,版本休溶,安裝依賴及作者信息
  • helloworld.plist 用于指定自動(dòng)注入的進(jìn)程代赁,這里可以看到指定為springboard
  • Makefile
  • Tweak.x 代碼

工程在[url]https://gitee.com/lich0/jailbroken_programming_lesson/tree/master/junior1_helloworld[/url]

執(zhí)行make package install到手機(jī)后,得到最終效果如圖

11.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兽掰,一起剝皮案震驚了整個(gè)濱河市芭碍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孽尽,老刑警劉巖窖壕,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杉女,居然都是意外死亡瞻讽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門熏挎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來速勇,“玉大人,你說我怎么就攤上這事坎拐》炒牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵廉白,是天一觀的道長(zhǎng)个初。 經(jīng)常有香客問我,道長(zhǎng)猴蹂,這世上最難降的妖魔是什么院溺? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮磅轻,結(jié)果婚禮上珍逸,老公的妹妹穿的比我還像新娘。我一直安慰自己聋溜,他們只是感情好谆膳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撮躁,像睡著了一般漱病。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天杨帽,我揣著相機(jī)與錄音漓穿,去河邊找鬼。 笑死注盈,一個(gè)胖子當(dāng)著我的面吹牛晃危,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播老客,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼僚饭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了胧砰?” 一聲冷哼從身側(cè)響起鳍鸵,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朴则,沒想到半個(gè)月后权纤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钓简,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乌妒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了外邓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撤蚊。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖损话,靈堂內(nèi)的尸體忽然破棺而出侦啸,到底是詐尸還是另有隱情,我是刑警寧澤丧枪,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布光涂,位于F島的核電站,受9級(jí)特大地震影響拧烦,放射性物質(zhì)發(fā)生泄漏忘闻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一恋博、第九天 我趴在偏房一處隱蔽的房頂上張望齐佳。 院中可真熱鬧,春花似錦债沮、人聲如沸炼吴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硅蹦。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間童芹,已是汗流浹背命爬。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辐脖,地道東北人饲宛。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嗜价,于是被迫代替她去往敵國和親艇抠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容