前言
Cycript是Objective-C++、ES6(JavaScript)、Java等語法的混合物,可以用來探索、修改触菜、調(diào)試正在運行的Mac\iOS APP
官網(wǎng): http://www.cycript.org/
文檔: http://www.cycript.org/manual/
通過Cydia安裝Cycript,即可在iPhone上調(diào)試運行中的APP
安裝adv-cmds
ps命令是process status的縮寫哀峻,使用ps命令可以列出系統(tǒng)當前的進程
列出所有的進程
ps –A
ps aux
搜索關(guān)鍵詞
ps –A | grep 關(guān)鍵詞
首先在逆向環(huán)境下登錄iPhone, 輸入ps -A 即可得到下圖所示
Cycript的基本使用方法
- Cycript的開啟和關(guān)閉
開啟
cycript
xinuowangdeiPhone6:~ root# cycript
cy#
cycript -p 進程ID
xinuowangdeiPhone6:~ root# cycript -p 4832
cy#
cycript -p 進程名稱
xinuowangdeiPhone6:~ root# cycript -p imeituan
cy#
注意:這幾個操作不可以同時進行,需要退出Cycript(control + D),才可以執(zhí)行不同的指令
快捷鍵
取消輸入:Ctrl + C
退出:Ctrl + D
清屏:Command + R
常用語法
UIApp
-
[UIApplication sharedApplication]
image.png 用內(nèi)存地址獲取對象
-
內(nèi)存地址
image.png 定義變量
-
var 變量名 = 變量值
image.png ObjectiveC.classes
-
已加載的所有OC類
image.png 查看對象的所有成員變量
-
*對象
image.png
- 遞歸打印view的所有子控件(跟LLDB一樣的函數(shù))
-
view.recursiveDescription().toString()
image.png
- 篩選出某種類型的對象
- choose(UIViewController)
- choose(UITableViewCell)
封裝Cycript - .cy文件編寫
我們可以將常用的Cycript代碼封裝在一個.cy文件中
利用SublimeText創(chuàng)建一個.cy文件
exports參數(shù)名固定涡相,用于向外提供接口
具體用法
將.cy文件存放到/usr/lib/cycript0.9目錄下(也可以用終端指令 scp -P 10010 ~/Desktop/cytool.cy root@localhost:/usr/lib/cycript0.9
)
首先導入.cy文件
@import cytool
推薦 mjcript.cy https://github.com/CoderMJLee/mjcript
Cycript實戰(zhàn)演練
- 對app界面進行修改 輸入代碼后回車 即可注入
/** 顯示通知個數(shù) */
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:999]
/** 隱藏狀態(tài)欄 */
[[UIApplication sharedApplication] setStatusBarHidden:YES]
-
對手機界面進行修改(修改微信錢包金額)
首先拿到當前控制器 --> 拿到當前控制器view的所有子控件
image.png
中文轉(zhuǎn)unicode 錢包 -- > \u96f6\u94b1 -- > 搜索
image.png
image.png
可以通過OC的代碼來修改app界面的內(nèi)容
image.png
image.png