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

參考書籍:iOS應用逆向工程第二版
調試其他應用界面,很詳細的教程
本文是在調試其他應用界面上補充

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


一. 準備工作

通過前幾章節的學習我們已經能夠通過Reveal查看自己開發程序界面信息,但是從Xcode6開始蘋果已經將Reveal查看自己開發程序界面信息的功能集成到了Xcode中, 只需要在程序運行起來之后點擊Debug View hierarch按鈕即可。

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

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

image
SSH是一種可以保證用戶加密遠程登錄到系統的協議,OpenSSH是一個SSH的連接傳輸工具。

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

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

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

image

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

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

image

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

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

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

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

此處有重大更新更新內容


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 繼續4.步

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

image

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

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

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

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

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

image

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

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

  • 作者其他文章推薦,持續更新學習心得筆記

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

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

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

JSPatch (實時修復App Store bug)學習(一)

iOS 高級工程師是怎么進階的(補充版20+點)

擴大按鈕(UIButton)點擊范圍(隨意方向擴展哦)

最簡單的免證書真機調試(原創)

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

TableView之MVVM與MVC之對比

使用MVVM減少控制器代碼實戰(減少56%)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容