cycript是大神saurik開發的一個非常強大的工具,可以讓開發人員在命令列下和應用互動,在運行時查看和修改應用。它確實可以協助你破解一些應用,但我覺得這個工具主要還是用來學習其他應用的設計(主要是UI的設計及實現)。
這個工具使用了Objective-C和Javascript的混合模式,可以即時的和應用互動甚至修改應用。它的網址請猛戳這裡。在官網上可以下載到完整的軟體包。使用的方式有兩種,一種是在越獄的裝置上通過MobileSubstrate加裝,這樣可以在所有的應用裡使用;另一種是通過靜態庫的方式把cycript整合到自己的應用,這樣做不要求越獄,當然也只能在自己的應用內使用了。
在越獄模式下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裝置上
3. 用dpkg -i來安裝deb包
4. 運行cycript,如果出現cy#的符號,那麼就是安裝完成了
vcC01L2436Osy/nS1MnosbjX7rrDu7nKx7K70qrUvdP8o6ywssirtdrSu8LvoaM8L3A+CjxwPiAgICAgIGN5Y3JpcHS1xNPDt6jJz9b30qrKx9eiyOvE47nY16K1xMTHuPbTptPDtcTP37PMo6zIu7rzvs2/ydLUu/G1w2FwcKOsu/G1w3dpbmRvd6Oswv3C/cilu/G1w3ZpZXdDb250cm9sbGVyo6zW8LK91vCyvbKmv6pVSbXEw+bJtKOs1eK49tTa0afPsL6tteTTptPDtcRVScqx1ea1xMrHzt7Jz7XEwPvG96OhPC9wPgo8cD4gICAgICDPws28ysfO0tTauPrX2c6i0MW1xFVJyrG1xNH519OjrLTz1sLJz7e9z/K+zcrH1eLR+dbwsr3J7sjroaM8L3A+CjxwPiAgICAgIDxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140612/2014061209163495.jpg" alt="\">
上面的例子是在越獄的機器上安裝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監聽連接埠
這個最好用一個宏來包一下,比如用:CYCRIPT_ENABLE
#ifdef CYCRIPT_ENABLE CYListenServer(8888);#endif
這裡的8888就是cycript的監聽連接埠,為了讓這句代碼起作用,請把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的架構有足夠的瞭解,另一方面也需要積累經驗。