這個工具使用了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#的符號,那么就是安裝完成了

安裝之后自然是使用,這個使用方法網上講得比較詳細了,很多拿的還是支付寶的例子,所以在這里順便提醒一下小伙伴們,現在設備集成了越來越多的應用,重要性和不可替代性都是越來越高,所以設備最好還是不要越獄,安全第一嘛。
cycript的用法上主要是注入你關注的那個應用的線程,然后就可以獲得app,獲得window,慢慢去獲得viewController,逐步逐步撥開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監聽端口
這個最好用一個宏來包一下,比如用:CYCRIPT_ENABLE
%20 %20 %20 %20 %20這里的8888就是cycript的監聽端口,為了讓這句代碼起作用,請把CYCRIPT_ENABLE在加入到預設宏里面。
%20 %20 %206.%20運行模擬器,這里還有一個要說明,目前只支持64bit的,不能使用32bit的模擬器,這個也需要配置一下,然后選擇正確的模擬器運行,應用就可以跑起來了,仍然是一片純潔的UI
%20 %20 %207.%20進入cmd界面,切換路徑到cycript包的解壓目錄下,運行./cycript%20-r%20127.0.0.1:8888
%20 %20 %20 %20 %20其中,127.0.0.1是你的模擬器或者設備地址,8888就是你代碼里面配置的監聽接口,如果正常,會進入cycript的REPL,這時就可以現場修改一些UI了,比如把白色背景改成紅色:
%20 %20
此時的UI應該就變成了紅色背景。

cycript的使用基本方法就是這樣了,剩下的就是如何使用的問題了,這個一方面需要對iOS的框架有足夠的了解,另一方面也需要積累經驗。
新聞熱點
疑難解答