iOS執行時工具-cycript

      cycript是大神saurik開發的一個很強大的工具,可以讓開發人員在命令行下和應用交互,在執行時查看和改動應用。它確實可以幫助你破解一些應用,但我認爲這個工具主要仍是用來學習其它應用的設計(主要是UI的設計及實現)。c++

      這個工具使用了Objective-C和Javascript的混合模式,可以實時的和應用交互甚至改動應用。它的網址請猛戳這裏。在官網上可以下載到完整的軟件包。使用的方式有兩種,一種是在越獄的設備上經過MobileSubstrate加裝,這樣可以在所有的應用裏使用;還有一種是經過靜態庫的方式把cycript集成到本身的應用,這樣作不要求越獄,固然也僅僅能在本身的應用內使用了。xcode

      在越獄模式下cycript的安裝:安全

      1. 在cydia下安裝openSSH,這樣可以確保能用SSH登陸到iOS設備上,假設你已經安裝過了,可以不用繼續安裝了微信

      2. 用sftp上傳下載的cycript_0.9.501_iphoneos-arm.deb和libffi_1-3.0.10-5_iphoneos-arm.deb安裝包到iOS設備上app

      

      3. 用dpkg -i來安裝deb包框架

      

      4. 執行cycript,假設出現cy#的符號,那麼就是安裝完畢了iphone

      

      安裝以後天然是使用,這個用法網上講得比較具體了,很是多拿的仍是支付寶的樣例,因此在這裏順便提醒一下小夥伴們,現在設備集成了愈來愈多的應用,重要性和不可替代性都是愈來愈高,因此設備不妨不要越獄,安全第一嘛。工具

      cycript的使用方法上主要是注入你關注的那個應用的線程,而後就可以得到app,得到window,慢慢去得到viewController,逐步逐步撥開UI的面紗,這個在學習經典應用的UI時真的是無上的利器!學習

      下圖是我在跟蹤微信的UI時的樣子,大體上方向就是這樣逐步深刻。ui

      


      上面的樣例是在越獄的機器上安裝cycript,而後可以在隨意的應用中使用。

      另外一種使用方法是在開發過程當中,把cycript的framework集成在應用中,這樣可以用於實時調整UI的參數,而且不要求機器越獄。如下給出一個最最簡單的樣例:

      1. 從官網下載cycript的包,是一個壓縮文件,裏面包含三個cycript.framework,cycript.lib和cycript

      2. xcode裏面新建一個target,只用最簡單的singleViewApplication建立一個空白的應用,這時界面應該是一片清純

      3. 加入�cycript框架以及依賴,加入�cycript.framework框架是應有之義,但這個框架還需要依賴庫的支持,包含JavaScriptCore和libstdc++;這裏需要注意的是libstdc++是有版本號要求的,必須是libstdc++.6.0.9.dylib,例如如下圖所看到的

      

      4. 設置編譯選項

          爲了解決libstdc++的兼容問題,還需要在BuildSetting頁設置"Other Linker Flags",加入�-lstdc++;另外還有「C++ Standard Library」,確保選擇了「Compiler Default」。假設沒有選擇特定的libstdc++版本號並且正確配置編譯器選項的花,在iOS7下連接會失敗的,這一點請務必注意。

      5. 改動代碼,打開cycript監聽port

          這個最好用一個宏來包一下,比方用:CYCRIPT_ENABLE

#ifdef CYCRIPT_ENABLE
    CYListenServer(8888);
#endif

          這裏的8888就是cycript的監聽port,爲了讓這句代碼起做用,請把CYCRIPT_ENABLE在添�到預設宏裏面。

      6. 執行模擬器,這裏另外一個要說明,眼下僅僅支持64bit的,不能使用32bit的模擬器,這個也需要配置一下,而後選擇正確的模擬器執行,應用就可以跑起來了,仍然是一片清純的UI

      7. 進入cmd界面,切換路徑到cycript包的解壓文件夾下,執行./cycript -r 127.0.0.1:8888

          當中,127.0.0.1是你的模擬器或者設備地址,8888就是你代碼裏面配置的監聽接口,假設正常,會進入cycript的REPL,這時就可以現場改動一些UI了,比方把白色背景改爲紅色:

      

      此時的UI應該就變成了紅色背景。

      

      

      cycript的使用基本方法就是這樣了,剩下的就是怎樣使用的問題了,這個一方面需要對iOS的框架有足夠的瞭解,還有一方面也需要積累經驗。

相關文章
相關標籤/搜索