最近在學(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è)備——進(jìn)行微調(diào)或修改來增強(qiáng)其功能。
而在 iOS 當(dāng)中,tweak 是指那些能夠增強(qiáng)其它進(jìn)程功能的 dylib。
可以將 tweak 理解為就是一個外掛,只不過這個外掛是以動態(tài)鏈接庫的方式注入到目標(biāo)應(yīng)用當(dāng)中。我們已經(jīng)很了解外掛就是用來作一些原本的應(yīng)用無法做到的事情,當(dāng)然搶紅包也屬于這樣的事。
如何安裝 tweak
上面已經(jīng)講過,本篇文章不會涉及到 tweak 的開發(fā),因此我們直接進(jìn)入安裝的主題。
對設(shè)備進(jìn)行越獄
對設(shè)備進(jìn)行越獄是安裝 tweak 的首要前提,如果沒有越獄設(shè)備,并且你不想對自己的設(shè)備進(jìn)行越獄,那么也可以不用繼續(xù)往下看了。
眾所周知,蘋果的權(quán)限管理是很嚴(yán)格的,在沒有越獄的情況下,我們能對設(shè)備進(jìn)行的操控其實是很有限的。而越獄之后我們就可以獲得root權(quán)限,即最高權(quán)限。
現(xiàn)在國內(nèi)最知名的越獄團(tuán)隊就是盤古與太極了,他們都提供了 windows 版與 mac 版的越獄軟件,可以進(jìn)行一鍵越獄。
需要注意的是,這兩家目前支持越獄的最新版本是 9.0.2。因此,如果你的設(shè)備已經(jīng)更新到 9.2 了,你可能需要重新找一臺比較低版本的設(shè)備。使用工具進(jìn)行越獄其實很簡單,在此也就不贅述了。
CydiaSubstrate
越獄完的設(shè)備上面都會多出一個 App,即 Cydia。
Cydia 可以理解為越獄界的 App Store。只不過 App Store 上面的都是經(jīng)過蘋果審核過的應(yīng)用。而 Cydia 上面的各式各樣的 App,tweak都或多或少使用到蘋果在 App Store 審核中禁用的功能特性,比如私有方法。
CydiaSubstrate 是 Cydia 的作者的另一個作品,它的主要功能就是對 App 進(jìn)行 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,然后進(jìn)行安裝就行了。
iOS 上的 OpenSSH 的默認(rèn)用戶有 root 和 mobile,默認(rèn)密碼都為 alpine。在這里強(qiáng)烈建議大家對默認(rèn)密碼進(jì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 - 輸入密碼進(jìn)行登錄,注意密碼是不會回顯的,也就是不會顯示普通的密碼星號,只要繼續(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
打開命令行,進(jìn)行如下操作:
export THEOS=/opt/theos
git clone https://github.com/DHowett/theos.git $THEOS
配置ldid
ldid是用于對 iOS 可執(zhí)行文具進(jìn)行簽名的工具,可以在越獄 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 文件,我們需要進(jìn)行手動操作。我們要做的就是從 iOS 上已經(jīng)安裝的 Cydia Substrate上復(fù)制這個文件下來。
要想在 Mac 上訪問 iOS 設(shè)備的文件目錄,新手可以直接使用 iFunBox,或者如果你覺得不屑使用圖形化工具,也可以直接使用 scp
命令來進(jìn)行拷貝。
需要拷貝的文件位于 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 上面進(jìn)行下載并自動安裝,但是前提就是你想要安裝的這個 tweak 的作者已經(jīng)將這個 tweak 提交到 cydia 源當(dāng)中了。
那你可能會問,那我為什么不直接提交到 Cydia 呢,多方便,多簡單,反而還要繞這么一大圈,然后特地又寫一篇博客來說明怎么從源碼進(jìn)行安裝,是不是太久沒裝逼憋壞了?我的回答是:因為我還不會提交,哈哈哈。當(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。
修改并保存后就可以進(jìn)行安裝了。
在 Mac 下打開終端命令行,并切換到這個倉庫的目錄,首先確保你的 iOS 設(shè)備上的微信是在運行中的,然后執(zhí)行如下的命令:
make package install
之后,根據(jù)提示,輸入兩次密碼(這個密碼就是你剛剛修改過的密碼),然后安裝就完成了。
就是這么簡單。
總結(jié)
洋洋灑灑寫了這么多,其實真正的步驟是很簡單的,只是我比較啰嗦,想把每個步驟都盡量講得詳細(xì)一點。
如果還有不清楚的地方,可以直接留言提問,或者直接到我的Github上提issue。
當(dāng)然,我也是新手,剛開始學(xué)習(xí)逆向,可能有些地方理解不準(zhǔn)確或有錯誤,歡迎批評指證。
再多啰嗦一句,這里講的都是很淺很淺的東西,可以說跟逆向只能搭上一丟丟的邊,如果你對逆向特別有興趣的話,強(qiáng)烈推薦去看下這本書iOS應(yīng)用逆向工程。