參考書籍:iOS應用逆向工程第二版
調試其他應用界面,很詳細的教程
本文是在調試其他應用界面上補充
上面的資料兩者結合看,結合看才會更容易看懂
一. 準備工作
通過前幾章節的學習我們已經能夠通過Reveal查看自己開發程序界面信息,但是從Xcode6開始蘋果已經將Reveal查看自己開發程序界面信息的功能集成到了Xcode中, 只需要在程序運行起來之后點擊Debug View hierarch按鈕即可。
1.越獄你的iOS設備:可以利用盤古、PP助手、太極等三方工具一鍵越獄。(筆者使用的就iOS版本就是iOS8.4,使用太極越獄,非廣告……關于越獄的教程,太極的官網上已經貼出,無比簡單,傻瓜式教程),iOS程序員越獄對手機無任何影響開發調試照常
PP助手
盤古
太極
2.iOS設備越獄完成后,需要使用Cydia
安裝兩個軟件:**OpenSSH
和CydiaSubstrate
**
安裝OpenSSH,打開越獄后的設備上的Cydia程序,點擊搜索輸入OpenSSH,然后點擊安裝。(下面的配圖是已經安裝成功后搜索的顯示畫面)
MobileSubstrate是一個公共庫,可以用來動態替換內存中的代碼、數據等?;旧显姜z機下比較有用的系統工具都需要這個庫,是Cydia同一個作者維護的,可以放心裝。
3.將libReveal.dylib上傳到越獄后的設備的/Library/MobileSubstrate/DinamicLibraries
下檢查工作:測試OpenSSH和Cydia Substrate是否安裝成功
》上傳libReveal.dylib文件必須使用到上面安裝的OpenSSH工具。如果想要使用OpenSSH工具,那么就必須將Reveal軟件所在的mac設備與越獄后的iOS設備置于同一個局域網內。
》首先來測試OpenSSH是否安裝成功。獲取越獄后的設備的局域網內的IP地址,打開“設置”->“WLAN”,連上局域網,然后再點擊連接上的局域網查看iOS設備的IP地址。
》打開mac上的終端工具(Terminal),輸入如下命令:ssh root@iOS設備IP地址。輸入完成后回車,等待連接iOS設備。
》接下來會提示你輸入root用戶的密碼,iOS設備root用戶的默認密碼是alpine,在終端中輸入密碼時,終端不會顯示你輸入的字符,所以只需要輸入alpine字符后回車就可以請求連接iOS設備了。(這一步請保證你的iOS設備屏幕已經解鎖,不然不會出現輸入密碼的提示!)
》如果出現~ root#字符就表示連接成功了。
接下來測試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(三步,很簡單)
3.2) 效果圖分別為淘寶和appstore的(淘寶的輪播是UIScrollView做的,背景view是大大的collectionView)
如果上面缺少ibReveal.dylib 繼續4.步
4.上傳libReveal.dylib。如果上一個步驟的檢查工作全部完成:OpenSSH和Cydia Substrate成功安裝。
重新打開mac上的終端工具(Terminal),使用如下命令進入Reveal軟件的動態庫所在目錄:cd /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries
使用如下命令將libReveal.dylib上傳到iOS設備的/Library/MobileSubstrate/DynamicLibraries目錄下:scp libReveal.dylib root@iOS設備IP地址:/Library/MobileSubstrate/DynamicLibraries/
,請替換@之后的“iOS設備的IP地址”為你的iOS設備的真實地址,回車執行命令后會讓你輸入iOS設備的root的密碼,默認是alpine,上傳成功后會顯示%100字樣。
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):
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字樣。
提示:如果此時在mac上的Reveal左上方沒有出現你想要調試的程序,這里給出幾個檢查的建議:
1.手機連接的wifi是否與mac處于同一局域網(如果你在執行步驟7時是在正確執行步驟5和6之后,那就忽略這個檢查,這里是針對手機重啟了或者是切換了手機網絡等情況)。
2.查看你編寫的libReveal.plist文件中寫的BundleID是否與你在iOS設備上打開的應用是否匹配。甚至,請檢查你的pist文件結構是否正確!
3.iOS設備上想要觀察的App應用必須處于前臺,進入后臺即使打開了,在Reveal的左上角“選擇連接的應用”框中也不會顯示。
- 作者其他文章推薦,持續更新學習心得筆記
成為iOS頂尖高手,你必須來這里(這里有最好的開源項目和文章)