這篇文章主要介紹了iOS中如何跟蹤函數(shù)調(diào)用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(成都創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的達(dá)州托管服務(wù)器,四川各地服務(wù)器托管,達(dá)州托管服務(wù)器、多線服務(wù)器托管.托管咨詢專線:18980820575
前言
跟蹤函數(shù)調(diào)用,什么意思呢,舉個例子,如果想做一個微信自動搶紅包的插件,就需要寫這么一個功能,當(dāng)紅包來了的時候,自動觸發(fā)微信的搶紅包函數(shù)。好,那咱就先找到這個函數(shù)。
映射端口
$ sh usb.sh Forwarding local port 10001 to remote port 22 Incoming connection to 10001
另起一終端登錄
$ sh login.sh
找到微信安裝路徑
ps -A|grep mobile 8636 ?? 0:35.91 /var/mobile/Containers/Bundle/Application/EB02DC6D-EBE5-4BE8-92CE-B9ABE75B3C3E/WeChat.app/WeChat
順便查看一下微信的 Bundle Id,創(chuàng)建Tweak的時候會用到
通過 cycript 注入 微信
~ root# cycript -p WeChat
執(zhí)行命令查看info 信息,查找 CFBundleIdentifier 獲取 Bundle Id
cy# [[NSBundle mainBundle] infoDictionary].toString() CFBundleIdentifier = "com.tencent.xin";
現(xiàn)在脫殼,(因為是從App Store上下載的)
~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/EB02DC6D-EBE5-4BE8-92CE-B9ABE75B3C3E/WeChat.app/WeChat
脫殼成功,退出登錄手機(jī)狀態(tài)
exit
將文件拷貝出來
$ scp -P 10001 root@localhost:/var/root/WeChat.decrypted Wechat
查看是否脫殼成功
$ otool -l Wechat | grep cryptid cryptid 0
導(dǎo)出微信頭文件
$ class-dump -H Wechat -o WechatHeaders
然后來到微信有紅包的聊天界面,通過Reveal 查看當(dāng)前界面的Controller 是BaseMsgContentViewController
然后找到剛剛導(dǎo)出的 BaseMsgContentViewController.h 文件打開,我去,有五百多個函數(shù).怎么辦,怎么知道那個是咱要用的函數(shù)?
有一個辦法,那就是創(chuàng)建一個Tweak工程,Tweak.xm 文件修改成如下內(nèi)容
%hook BaseMsgContentViewController - (void)touchesBegan_TableView:(id)arg1 withEvent:(id)arg2 { NSLog(@"%@",NSStringFromSelector(_cmd)); %orig; } ... %end
上面三個點代表那五百多個函數(shù)。很恐怖吧。
重點來啦,logify.pl腳本,是安裝theos的時候自帶的,該腳本用來注入NSLog來打印方法的入?yún)⒑统鰠ⅰ?就是在所有的方法里面加 log)
位置在
/theos/bin/logify.pl
這是替身,真實路徑在
/theos/vendor/logos/bin/logify.pl
在終端執(zhí)行命令
$ logify.pl BaseMsgContentViewController.h > Tweak.xm
ps: 能夠執(zhí)行l(wèi)ogify.pl 命令是因為在 .bash_profile 文件中添加了
export THEOS=~/theos export PATH=$THEOS/bin:$PATH$
查看剛剛生成Tweak.xm 文件
注意紅框的位置
%log 是調(diào) unix 的系統(tǒng)日志打印服務(wù)
%orig 是調(diào)用原始方法的代碼
HBLogDebug 是打印出返回值
這樣多方便,不需要一個個去寫了。用新生成的Tweak.xm 文件替換 Tweak工程生成的Tweak.xm文件
新建一個工程,在終端輸入
```
nic.pl
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“iOS中如何跟蹤函數(shù)調(diào)用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!