最近在學(xué)習(xí) iOS 逆向開發(fā)的時候煤惩,為了練手,開發(fā)了一個 iOS 版的微信搶紅包 tweak,并且已經(jīng)發(fā)布到了 Github 上面汽纤。
但是,很多小伙伴表示不會安裝福荸,特此寫了這篇iOS tweak 安裝教程蕴坪。
說明:本篇文章只是為了說明如何在 iOS 當(dāng)中安裝 tweak,并不會涉及完整的逆向環(huán)境的搭建敬锐,也不會涉及到 tweak 的開發(fā)背传。如果對這方面有興趣的童鞋可以參考iOS應(yīng)用逆向工程這本書。
何謂 tweak
tweak 在維基百科上的定義是:對復(fù)雜的系統(tǒng)——通常是電子設(shè)備——進行微調(diào)或修改來增強其功能台夺。
而在 iOS 當(dāng)中径玖,tweak 是指那些能夠增強其它進程功能的 dylib。
可以將 tweak 理解為就是一個外掛颤介,只不過這個外掛是以動態(tài)鏈接庫的方式注入到目標(biāo)應(yīng)用當(dāng)中梳星。我們已經(jīng)很了解外掛就是用來作一些原本的應(yīng)用無法做到的事情,當(dāng)然搶紅包也屬于這樣的事滚朵。
如何安裝 tweak
上面已經(jīng)講過冤灾,本篇文章不會涉及到 tweak 的開發(fā),因此我們直接進入安裝的主題辕近。
對設(shè)備進行越獄
對設(shè)備進行越獄是安裝 tweak 的首要前提韵吨,如果沒有越獄設(shè)備,并且你不想對自己的設(shè)備進行越獄移宅,那么也可以不用繼續(xù)往下看了归粉。
眾所周知椿疗,蘋果的權(quán)限管理是很嚴(yán)格的,在沒有越獄的情況下糠悼,我們能對設(shè)備進行的操控其實是很有限的变丧。而越獄之后我們就可以獲得root權(quán)限,即最高權(quán)限绢掰。
現(xiàn)在國內(nèi)最知名的越獄團隊就是盤古與太極了痒蓬,他們都提供了 windows 版與 mac 版的越獄軟件,可以進行一鍵越獄滴劲。
需要注意的是攻晒,這兩家目前支持越獄的最新版本是 9.0.2。因此班挖,如果你的設(shè)備已經(jīng)更新到 9.2 了鲁捏,你可能需要重新找一臺比較低版本的設(shè)備。使用工具進行越獄其實很簡單萧芙,在此也就不贅述了给梅。
CydiaSubstrate
越獄完的設(shè)備上面都會多出一個 App,即 Cydia双揪。
Cydia 可以理解為越獄界的 App Store动羽。只不過 App Store 上面的都是經(jīng)過蘋果審核過的應(yīng)用。而 Cydia 上面的各式各樣的 App渔期,tweak都或多或少使用到蘋果在 App Store 審核中禁用的功能特性运吓,比如私有方法。
CydiaSubstrate 是 Cydia 的作者的另一個作品疯趟,它的主要功能就是對 App 進行 hook拘哨,替換 App 中代碼的實現(xiàn),它是絕大部分 tweak 正常工作的基礎(chǔ)信峻,Cydia 上的 tweak 都是基于 CydiaSubstrate 的倦青。
一般情況下,越獄完之后就已經(jīng)安裝了 CydiaSubstrate 了盹舞,如果你想看到軟件包的詳細(xì)信息产镐,可以直接在 Cydia 當(dāng)中搜索 Cydia Substrate。
安裝 OpenSSH
OpenSSH 會在 iOS 上安裝 SSH 服務(wù)矾策,以供外界可以遠(yuǎn)程登錄到 iOS 系統(tǒng)當(dāng)中磷账。
安裝 OpenSSH 也很簡單,同樣在 Cydia 當(dāng)中搜索 OpenSSH贾虽,然后進行安裝就行了逃糟。
iOS 上的 OpenSSH 的默認(rèn)用戶有 root 和 mobile,默認(rèn)密碼都為 alpine。在這里強烈建議大家對默認(rèn)密碼進行修改绰咽,如果沒有修改菇肃,很多病毒就可以輕易地通過 ssh 以 root 身份遠(yuǎn)程登錄到 iOS 當(dāng)中,這后果可是非常嚴(yán)重的取募。
修改密碼的步驟:
- 確保你的電腦跟你的 iOS 設(shè)備在同一個局域網(wǎng)當(dāng)中
- 獲取 iOS 設(shè)備的 IP:設(shè)備 -> 無線局域網(wǎng) -> 查看當(dāng)前連接的 WIFI 的詳細(xì)信息琐谤,就可以看到設(shè)備的 IP
- 在 Mac 上打開終端,執(zhí)行命令
ssh root@DeveiceIP
玩敏,將 DeveiceIP 替換成你的設(shè)備 IP - 輸入密碼進行登錄斗忌,注意密碼是不會回顯的,也就是不會顯示普通的密碼星號旺聚,只要繼續(xù)輸入就行了织阳,輸入完后按回車
- 登錄后,修改root用戶密碼砰粹,執(zhí)行命令
passwd root
唧躲,根據(jù)提示輸入新密碼 - 再修改mobile用戶密碼,執(zhí)行
passwd mobile
碱璃,根據(jù)提示輸入新密碼
至此弄痹,iOS 設(shè)備上的環(huán)境就配置好了。
安裝 Theos
Theos 是一個越獄開發(fā)工具包嵌器,它可以生成 iOS 越獄APP以及tweak等程序的框架肛真,并提供makefile來編譯、打包和安裝嘴秸。
安裝 Xcode 和 Command Line Tools
會來看這篇教程的毁欣,我默認(rèn)大家都是 iOS 開發(fā)者了庇谆,所以應(yīng)該都已經(jīng)安裝了Xcode了岳掐,Xcode 就已經(jīng)附帶了 Command Line Tools。
從 Github 下載 Theos
打開命令行饭耳,進行如下操作:
export THEOS=/opt/theos
git clone https://github.com/DHowett/theos.git $THEOS
配置ldid
ldid是用于對 iOS 可執(zhí)行文具進行簽名的工具串述,可以在越獄 iOS 中替換 Xcode 自帶的簽名工具。從 http://joedj.net/ldid 下載寞肖,將其移動到 /opt/theos/bin
目錄下纲酗,然后設(shè)置可執(zhí)行權(quán)限。
cd <下載ldid的目錄>
sudo mv ldid /opt/theos/binsudo
chmod 777 /opt/theos/bin/ldid
配置CydiaSubstrate
運行 Theos 自動化配置腳本:
sudo /opt/theos/bin/bootstrap.sh substrate
在這里會出現(xiàn)一個問題新蟆,提示說無法自動生成一個有效的 libsubstrate.dylib 文件觅赊,我們需要進行手動操作。我們要做的就是從 iOS 上已經(jīng)安裝的 Cydia Substrate上復(fù)制這個文件下來琼稻。
要想在 Mac 上訪問 iOS 設(shè)備的文件目錄吮螺,新手可以直接使用 iFunBox,或者如果你覺得不屑使用圖形化工具,也可以直接使用 scp
命令來進行拷貝鸠补。
需要拷貝的文件位于 iOS 上的 "/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate"萝风,將其拷貝到 OSX 上,然后重命名為 libsubstrate.dylib 后放到 "/opt/theos/libsubstrate.dylib" 中紫岩,將無效的文件替換掉就可以了规惰。
配置 dpkg-deb
deb 是越獄開發(fā)安裝包的標(biāo)準(zhǔn)格式,而 dpkg-deb 是操作 deb 文件的工具泉蝌,有了這個工具歇万,Theos 才能將工程正確地打包成 deb 包。
從 https://raw.githubusercontent.com/DHowett/dm.pl/master/dm.pl下載dm.pl勋陪,將其重命名為 dpkg-deb 后堕花,放到 "/opt/theos/bin/" 目錄下,然后設(shè)置它的可執(zhí)行權(quán)限:
sudo chmod 777 /opt/theos/bin/dpkg-deb
其實粥鞋,Theos 已經(jīng)是一個 tweak 的開發(fā)環(huán)境了缘挽,但是由于這里只是因為需要編譯 tweak 而用到它,所以它的很多后續(xù)配置也沒有詳細(xì)講解了呻粹。
至此壕曼,我們的安裝環(huán)境就搭建完了,下一步可以正式地開始安裝 tweak 了等浊。
正式安裝 tweak
根據(jù)上面的內(nèi)容腮郊,我們大概知道了,如果要安裝一個別人的 tweak筹燕,最簡單的方法就是直接到 Cydia 上面進行下載并自動安裝轧飞,但是前提就是你想要安裝的這個 tweak 的作者已經(jīng)將這個 tweak 提交到 cydia 源當(dāng)中了。
那你可能會問撒踪,那我為什么不直接提交到 Cydia 呢过咬,多方便,多簡單制妄,反而還要繞這么一大圈掸绞,然后特地又寫一篇博客來說明怎么從源碼進行安裝,是不是太久沒裝逼憋壞了耕捞?我的回答是:因為我還不會提交衔掸,哈哈哈。當(dāng)然那只是其中一部分原因俺抽,主要還是因為我做這個插件原來也是出于練手學(xué)習(xí)的目的敞映,后來有很多小伙伴都跟我要,我才放到 Github 上的磷斧。而且振愿,這種作弊式的插件有點破壞游戲平衡了诗芜,原本搶紅包也都是圖個歡樂,如果作弊了就破壞了這種氣氛(道貌岸然狀)埃疫。
所以伏恐,經(jīng)過我“苦口婆心”的勸說,你還是想安裝的話栓霜,就到我的Github去下載吧(如果覺得好用翠桦,就點個星鼓勵一下吧)。
將倉庫拉取下來后胳蛮,可以看到主目錄里有一個 Tweak.xm
文件销凑,主要的代碼就寫在這個文件中,其實里面的代碼也就幾行仅炊,做 tweak 的主要精力還是花在找你的目標(biāo)方法上斗幼,真正寫代碼其實不會太多。當(dāng)然抚垄,你如果只是單純想安裝的話蜕窿,這個文件就跟你無關(guān)了。
主要修改的是Makefile
文件呆馁,使用編輯器打開Makefile文件桐经,可以看到頭兩行是這樣的:
THEOS_DEVICE_IP = localhost
THEOS_DEVICE_PORT = 2222
將 localhost 替換成你的 iOS 設(shè)備的 IP,IP的獲取方法在上面已經(jīng)提過了浙滤。然后將端口 2222 替換成 22阴挣。
修改并保存后就可以進行安裝了。
在 Mac 下打開終端命令行纺腊,并切換到這個倉庫的目錄畔咧,首先確保你的 iOS 設(shè)備上的微信是在運行中的,然后執(zhí)行如下的命令:
make package install
之后揖膜,根據(jù)提示誓沸,輸入兩次密碼(這個密碼就是你剛剛修改過的密碼),然后安裝就完成了次氨。
就是這么簡單蔽介。
總結(jié)
洋洋灑灑寫了這么多,其實真正的步驟是很簡單的煮寡,只是我比較啰嗦,想把每個步驟都盡量講得詳細(xì)一點犀呼。
如果還有不清楚的地方幸撕,可以直接留言提問,或者直接到我的Github上提issue外臂。
當(dāng)然坐儿,我也是新手,剛開始學(xué)習(xí)逆向,可能有些地方理解不準(zhǔn)確或有錯誤貌矿,歡迎批評指證炭菌。
再多啰嗦一句,這里講的都是很淺很淺的東西逛漫,可以說跟逆向只能搭上一丟丟的邊黑低,如果你對逆向特別有興趣的話,強烈推薦去看下這本書iOS應(yīng)用逆向工程酌毡。