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#的符號,那么就是安裝完畢了
安裝之后自然是使用,這個用法網上講得比較具體了,非常多拿的還是支付寶的樣例,所以在這里順便提醒一下小伙伴們,如今設備集成了越來越多的應用,重要性和不可替代性都是越來越高,所以設備不妨不要越獄,安全第一嘛。
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監聽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的框架有足夠的了解,還有一方面也須要積累經驗。