iOS逆向Reveal查看任意app 的界面

參考書籍:iOS應(yīng)用逆向工程第二版
調(diào)試其他應(yīng)用界面,很詳細(xì)的教程
本文是在調(diào)試其他應(yīng)用界面上補(bǔ)充

上面的資料兩者結(jié)合看,結(jié)合看才會更容易看懂


一. 準(zhǔn)備工作

通過前幾章節(jié)的學(xué)習(xí)我們已經(jīng)能夠通過Reveal查看自己開發(fā)程序界面信息,但是從Xcode6開始蘋果已經(jīng)將Reveal查看自己開發(fā)程序界面信息的功能集成到了Xcode中, 只需要在程序運(yùn)行起來之后點(diǎn)擊Debug View hierarch按鈕即可。

image
在企業(yè)級開發(fā)中其實(shí)我們更多的是利用Reveal來學(xué)習(xí)其它應(yīng)用程序的界面效果。要想使用Reveal查看其它應(yīng)用程序的界面效果必須具備一個條件那就是必須擁有一臺越獄設(shè)備
1.越獄你的iOS設(shè)備:可以利用盤古、PP助手、太極等三方工具一鍵越獄。(筆者使用的就iOS版本就是iOS8.4,使用太極越獄,非廣告……關(guān)于越獄的教程,太極的官網(wǎng)上已經(jīng)貼出,無比簡單,傻瓜式教程),iOS程序員越獄對手機(jī)無任何影響開發(fā)調(diào)試照常
PP助手
盤古
太極

2.iOS設(shè)備越獄完成后,需要使用Cydia
安裝兩個軟件:**OpenSSH
CydiaSubstrate
**
安裝OpenSSH,打開越獄后的設(shè)備上的Cydia程序,點(diǎn)擊搜索輸入OpenSSH,然后點(diǎn)擊安裝。(下面的配圖是已經(jīng)安裝成功后搜索的顯示畫面)

image
SSH是一種可以保證用戶加密遠(yuǎn)程登錄到系統(tǒng)的協(xié)議,OpenSSH是一個SSH的連接傳輸工具。

安裝Cydia Substrate,打開越獄后的設(shè)備上的Cydia程序,點(diǎn)擊搜索輸入Cydia Substrate,然后點(diǎn)擊安裝。只有安裝了CydiaSubstrate之后才會有MobileSubstrate目錄(此目錄必須存在才可以繼續(xù)下面的步驟)。(下面的配圖是已經(jīng)安裝成功后搜索的顯示畫面)
image

MobileSubstrate是一個公共庫,可以用來動態(tài)替換內(nèi)存中的代碼、數(shù)據(jù)等?;旧显姜z機(jī)下比較有用的系統(tǒng)工具都需要這個庫,是Cydia同一個作者維護(hù)的,可以放心裝。

3.將libReveal.dylib上傳到越獄后的設(shè)備的/Library/MobileSubstrate/DinamicLibraries
下檢查工作:測試OpenSSH和Cydia Substrate是否安裝成功
》上傳libReveal.dylib文件必須使用到上面安裝的OpenSSH工具。如果想要使用OpenSSH工具,那么就必須將Reveal軟件所在的mac設(shè)備與越獄后的iOS設(shè)備置于同一個局域網(wǎng)內(nèi)。
》首先來測試OpenSSH是否安裝成功。獲取越獄后的設(shè)備的局域網(wǎng)內(nèi)的IP地址,打開“設(shè)置”->“WLAN”,連上局域網(wǎng),然后再點(diǎn)擊連接上的局域網(wǎng)查看iOS設(shè)備的IP地址。

image

》打開mac上的終端工具(Terminal),輸入如下命令:ssh root@iOS設(shè)備IP地址。輸入完成后回車,等待連接iOS設(shè)備。
image
iOS設(shè)備的IP地址指的是越獄后的設(shè)備(iphone、ipad)的IP地址,也就是上個步驟中獲取的IP地址,后面的教程中出現(xiàn)的地址僅僅是代表筆者測試時(shí)iOS設(shè)備的IP地址(192.168.2.2),讀者請一定要查看自己的iOS設(shè)備地址,并進(jìn)行替換。

》接下來會提示你輸入root用戶的密碼,iOS設(shè)備root用戶的默認(rèn)密碼是alpine,在終端中輸入密碼時(shí),終端不會顯示你輸入的字符,所以只需要輸入alpine字符后回車就可以請求連接iOS設(shè)備了。(這一步請保證你的iOS設(shè)備屏幕已經(jīng)解鎖,不然不會出現(xiàn)輸入密碼的提示!

image

》如果出現(xiàn)~ root#字符就表示連接成功了。
image

接下來測試Cydia Substrate 是否安裝成功,上一步已經(jīng)連接上iOS設(shè)備的終端中輸入以下命令:cd /Library/MobleSubstrate/DinamicLibraries
,回車查看返回結(jié)果。如果出現(xiàn)-sh: cd: /Library/MobileSubstrate/DynamicLibraries: No such file or directory

提示那就說明Cydia Substrate安裝**不成功**,不成功請重新進(jìn)入iOS設(shè)備上下載安裝Cydia Substrate軟件。

非也,有可能是安裝成功的

此處有重大更新更新內(nèi)容


cd: /Library/MobileSubstrate/DynamicLibraries: No such file or directory 并不一定就是沒安裝好Cydia Substrate軟件,使用ls -l /Library命令查看里面是否有RHRevealLoader

shujinokinakenkou:~ root# ls -l /Library
total 24
drwxrwxr-x 6 root admin  204 Feb 26  2015 Application Support
drwxrwxr-x 5 root admin  170 Feb 26  2015 Audio
drwxrwxrwt 2 root admin   68 Nov  8  2014 Caches
drwxrwxr-x 2 root admin   68 Nov  8  2014 Filesystems
drwxr-xr-x 3 root admin  102 Jul  2 01:21 Frameworks
drwxrwxr-x 2 root admin   68 Nov  8  2014 Internet Plug-Ins
lrwxr-xr-x 1 root admin   24 Feb 26  2015 Keychains -> ../private/var/Keychains
drwxr-xr-x 2 root wheel   68 Nov  8  2014 LaunchAgents
drwxr-xr-x 2 root wheel 9350 Jul  2 16:00 LaunchDaemons
lrwxr-xr-x 1 root admin   19 Feb 26  2015 Logs -> ../private/var/logs
drwxrwxr-x 2 root admin  102 Nov  8  2014 Managed Preferences
lrwxr-xr-x 1 root admin   27 Feb 26  2015 MobileDevice -> ../private/var/MobileDevice
drwxr-xr-x 3 root wheel  136 Jul  2 18:00 MobileSubstrate
drwxr-xr-x 4 root admin  170 Sep 17  2015 MusicUISupport
drwxr-xr-x 2 root wheel   68 Oct 16  2015 PreferenceBundles
drwxr-xr-x 3 root wheel  102 Jul  2 16:00 PreferenceLoader
lrwxr-xr-x 1 root admin   26 Feb 26  2015 Preferences -> ../private/var/preferences
drwxrwxr-x 2 root admin   68 Nov  8  2014 Printers
drwxr-xr-x 2 root admin  102 Jul  2 16:00 RHRevealLoader
lrwxr-xr-x 1 root admin   29 Jul  1 21:05 Ringtones -> /var/stash/_.3W5Eov/Ringtones
drwxrwxr-x 2 root admin   68 Nov  8  2014 Updates

RHRevealLoader說明安裝是正確的,再使用root# ls -l /Library/RHRevealLoader ,里面有libReveal.dylib

shujinokinakenkou:~ root# ls -l /Library/RHRevealLoader
total 4284
-rw-r--r-- 1 root admin 4384608 Jul  2 16:00 libReveal.dylib
shujinokinakenkou:~ root# 

3.1)下一步配置Reveal(三步,很簡單)

Snip20160702_14.png

3.2) 效果圖分別為淘寶和appstore的(淘寶的輪播是UIScrollView做的,背景view是大大的collectionView)

taobao.gif

appstore.gif

如果上面缺少ibReveal.dylib 繼續(xù)4.步

4.上傳libReveal.dylib。如果上一個步驟的檢查工作全部完成:OpenSSH和Cydia Substrate成功安裝。
重新打開mac上的終端工具(Terminal),使用如下命令進(jìn)入Reveal軟件的動態(tài)庫所在目錄:cd /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries

image

使用如下命令將libReveal.dylib上傳到iOS設(shè)備的/Library/MobileSubstrate/DynamicLibraries目錄下:scp libReveal.dylib root@iOS設(shè)備IP地址:/Library/MobileSubstrate/DynamicLibraries/
,請?zhí)鎿Q@之后的“iOS設(shè)備的IP地址”為你的iOS設(shè)備的真實(shí)地址,回車執(zhí)行命令后會讓你輸入iOS設(shè)備的root的密碼,默認(rèn)是alpine,上傳成功后會顯示%100字樣。
image

5.編寫并上傳一份libReveal.plist
到iOS設(shè)備的/Library/MobileSubstrate/DynamicLibraries
目錄中。這個文件的作用是:在Reveal中監(jiān)控指定的App,不上傳這個文件也是可以的,那么Reveal就會監(jiān)控所有的App,只是這樣速度會慢一點(diǎn)點(diǎn)。編寫libReveal.plist文件,最簡單的方法就是新建一個plist文件,它的內(nèi)容是
{ Filter = { Bundles = ( "你要查看的app的bundle Id1","你要查看的app的bundle Id2" ); }; }

xcode下打開這個libReveal.plist文件可以看到它的結(jié)構(gòu)示例(筆者已經(jīng)添加了兩個Bundle ID):

image
關(guān)于獲取iOS App應(yīng)用的Bundle ID:打開PP助手、iTools、itunes等工具,備份手機(jī)上安裝到的程序到電腦上(或直接下載需要查看程序ipa文件),將.ipa修改成.zip,解壓后按如下路徑進(jìn)入info.plist文件所在目錄,打開info.plist其中便有我們需要的bundle Id。
image
image

6.上傳libReveal.plist
到iOS設(shè)備的/Library/MobileSubstrate/DynamicLibraries
目錄中。打開終端進(jìn)入libReveal.plist所在的目錄,使用如下命令上傳:scp libReveal.plist root@iOS設(shè)備的IP地址:/Library/MobileSubstrate/DynamicLibraries/
,請?zhí)鎿Q@之后的“iOS設(shè)備的IP地址”為你的iOS設(shè)備的真實(shí)地址,回車執(zhí)行命令后會讓你輸入iOS設(shè)備的root的密碼,默認(rèn)是alpine,上傳成功后會顯示%100字樣。

image

7.接下來在重啟你的iOS設(shè)備,連上mac電腦所在的局域網(wǎng),上打開你需要在Reveal中觀察的程序,此時(shí)在mac電腦上的Reveal中選擇你要觀察的程序。
image
image

提示:如果此時(shí)在mac上的Reveal左上方?jīng)]有出現(xiàn)你想要調(diào)試的程序,這里給出幾個檢查的建議:
1.手機(jī)連接的wifi是否與mac處于同一局域網(wǎng)(如果你在執(zhí)行步驟7時(shí)是在正確執(zhí)行步驟5和6之后,那就忽略這個檢查,這里是針對手機(jī)重啟了或者是切換了手機(jī)網(wǎng)絡(luò)等情況)。
2.查看你編寫的libReveal.plist文件中寫的BundleID是否與你在iOS設(shè)備上打開的應(yīng)用是否匹配。甚至,請檢查你的pist文件結(jié)構(gòu)是否正確!
3.iOS設(shè)備上想要觀察的App應(yīng)用必須處于前臺,進(jìn)入后臺即使打開了,在Reveal的左上角“選擇連接的應(yīng)用”框中也不會顯示。

  • 作者其他文章推薦,持續(xù)更新學(xué)習(xí)心得筆記

Runtime 10種用法(沒有比這更全的了)

成為iOS頂尖高手,你必須來這里(這里有最好的開源項(xiàng)目和文章)

iOS逆向Reveal查看任意app 的界面

JSPatch (實(shí)時(shí)修復(fù)App Store bug)學(xué)習(xí)(一)

iOS 高級工程師是怎么進(jìn)階的(補(bǔ)充版20+點(diǎn))

擴(kuò)大按鈕(UIButton)點(diǎn)擊范圍(隨意方向擴(kuò)展哦)

最簡單的免證書真機(jī)調(diào)試(原創(chuàng))

通過分析微信app,學(xué)學(xué)如何使用@2x,@3x圖片

TableView之MVVM與MVC之對比

使用MVVM減少控制器代碼實(shí)戰(zhàn)(減少56%)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容