Cycript(無需越獄)的集成與踩坑

什麼是Cycript

Cycript容許開發人員經過交互式控制檯,使用Objective-C ++和JavaScript語法的混合,在iOS或Mac OS X上檢測和修改正在運行的應用程序。ios

Cycript 目前的主要用途是在 iOS 上進行逆向工做,使用 Cydia Substrate 能夠注入正在運行的進程(相似於調試器),這使它成爲「探險」的理想工具。c++

Cycript還經過靜態庫的方式集成到本身的應用,這樣作不要求越獄,固然也僅僅能在本身的應用內使用了。git

安裝Cycript

  • 經過官網:www.cycript.org/ 下載SDK,將SDK解壓到本地,並經過在.bash_profile 文件中配置環境變量,讓cycript腳本在任意目錄中執行。
  • 打開終端執行ycript,出現以下錯誤
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
  Referenced from: /Users/hejunbin/software/cycript_0.9.594/Cycript.lib/cycript-apl
  Reason: image not found
[1]    41778 abort      cycript
複製代碼

解決方式一:github

brew install ruby@2.0
把/usr/local/Cellar/ruby@2.0/2.0.0-p648_2/lib/libruby.2.0.0.dylib拷貝到Cycript.lib目錄下
複製代碼

解決方式二:sql

關閉SIP
當你在系統文件、文件夾下,建立新的文件添加新的文件夾時,有的時候會提示安全緣由沒法修改系統文件SO

電腦重啓按住command+R,進入恢復模式
打開終端,輸入csrutil disable,重啓
想再次打開csrutil enable
微軟不高興了就打着安全的晃子搞了個SB,蘋果不高興了就打着安全的晃子搞了這個SIP,真會玩。

執行以下命令:
sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/
sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib

複製代碼
  • 再次輸入cycript,出現以下信息,表示成功
cy#
複製代碼

在項目中集成Cycript

由於Cycript須要用到libstdc++.6.0.9.tbd,因此最好Xcode使用10之前的版本,iOS系統使用12之前的版本。安全

  • 將Cycript下Cycript.ios中的Cycript.framework添加到項目中,飯後再添加:JavaScriptCore.framework、libstdc++.6.0.9.tbd和libsqlite3.0.tbd。
  • 導入頭文件<Cycript/Cycript.h>,在- (BOOL)application: didFinishLaunchingWithOptions:中加入監聽:CYListenServer(8888);
#import <Cycript/Cycript.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    CYListenServer(8888);
    
    return YES;
}
複製代碼
  • 在iOS 11.4模擬器下運行,報以下錯誤:
libc++abi.dylib: terminating with uncaught exception of type CYPoolError
複製代碼

解決方式,使用老版本的Cycript.framework代替。ruby

筆者使用 github.com/Naituw/IPAP… 中的Cycript.framework代替運行成功。bash

鏈接

cycript -r 127.0.0.1:8888
複製代碼
相關文章
相關標籤/搜索