iOS逆向教程之跟蹤函數(shù)調(diào)用詳解
前言
今天學(xué)習(xí)的是跟蹤函數(shù)調(diào)用,什么意思呢,舉個(gè)例子,如果想做一個(gè)微信自動(dòng)搶紅包的插件,就需要寫這么一個(gè)功能,當(dāng)紅包來(lái)了的時(shí)候,自動(dòng)觸發(fā)微信的搶紅包函數(shù)。好,那咱就先找到這個(gè)函數(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的時(shí)候會(huì)用到
通過(guò) cycript 注入 微信
~ root# cycript -p WeChat
執(zhí)行命令查看info 信息,查找 CFBundleIdentifier 獲取 Bundle Id
cy# [[NSBundle mainBundle] infoDictionary].toString() CFBundleIdentifier = "com.tencent.xin";
現(xiàn)在脫殼,(因?yàn)槭菑腁pp Store上下載的)
~ root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/EB02DC6D-EBE5-4BE8-92CE-B9ABE75B3C3E/WeChat.app/WeChat
脫殼成功,退出登錄手機(jī)狀態(tài)
exit
將文件拷貝出來(lái)
$ 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
然后來(lái)到微信有紅包的聊天界面,通過(guò)Reveal 查看當(dāng)前界面的Controller 是BaseMsgContentViewController
然后找到剛剛導(dǎo)出的 BaseMsgContentViewController.h 文件打開(kāi),我去,有五百多個(gè)函數(shù).怎么辦,怎么知道那個(gè)是咱要用的函數(shù)?
有一個(gè)辦法,那就是創(chuàng)建一個(gè)Tweak工程,Tweak.xm 文件修改成如下內(nèi)容
%hook BaseMsgContentViewController
- (void)touchesBegan_TableView:(id)arg1 withEvent:(id)arg2
{
NSLog(@"%@",NSStringFromSelector(_cmd));
%orig;
}
...
%end
上面三個(gè)點(diǎn)代表那五百多個(gè)函數(shù)。很恐怖吧。
重點(diǎn)來(lái)啦,logify.pl腳本,是安裝theos的時(shí)候自帶的,該腳本用來(lái)注入NSLog來(lái)打印方法的入?yún)⒑统鰠ⅰ?就是在所有的方法里面加 log)
位置在
/theos/bin/logify.pl
這是替身,真實(shí)路徑在
/theos/vendor/logos/bin/logify.pl
在終端執(zhí)行命令
$ logify.pl BaseMsgContentViewController.h > Tweak.xm
ps: 能夠執(zhí)行l(wèi)ogify.pl 命令是因?yàn)樵?.bash_profile 文件中添加了
export THEOS=~/theos export PATH=$THEOS/bin:$PATH$
查看剛剛生成Tweak.xm 文件

注意紅框的位置
- %log 是調(diào) unix 的系統(tǒng)日志打印服務(wù)
- %orig 是調(diào)用原始方法的代碼
- HBLogDebug 是打印出返回值
這樣多方便,不需要一個(gè)個(gè)去寫了。用新生成的Tweak.xm 文件替換 Tweak工程生成的Tweak.xm文件
新建一個(gè)工程,在終端輸入
```
nic.pl
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
IOS 貝塞爾曲線(UIBezierPath)屬性、方法整理
這篇文章主要介紹了IOS 貝塞爾曲線(UIBezierPath)屬性、方法的相關(guān)資料,這里整理了貝塞爾 曲線的基礎(chǔ)資料,對(duì)屬性及相應(yīng)的方法一一做了詳解,需要的朋友可以參考下2016-11-11
iOS開(kāi)發(fā)之適配iOS10以及Xcode8
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)之適配iOS10以及Xcode8的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
IOS開(kāi)發(fā)自定義Button的外觀和交互行為示例詳解
這篇文章主要為大家介紹了IOS開(kāi)發(fā)自定義Button的外觀和交互行為示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
iOS 動(dòng)畫實(shí)戰(zhàn)之釣魚小游戲?qū)嵗a
最近小編做了一個(gè)釣魚小游戲,平時(shí)沒(méi)有做過(guò),所以上手有點(diǎn)急躁,不過(guò),最終還是實(shí)現(xiàn)了,下面小編給大家分享iOS 動(dòng)畫實(shí)戰(zhàn)之釣魚小游戲的實(shí)現(xiàn)思路,感興趣的朋友一起看看吧2018-02-02
Swift Self詳解及簡(jiǎn)單實(shí)例代碼
這篇文章主要介紹了Swift Self詳解及簡(jiǎn)單實(shí)例代碼的相關(guān)資料,這里對(duì)self 進(jìn)行了詳細(xì)介紹并附實(shí)例代碼,需要的朋友可以參考下2016-12-12
iOS開(kāi)發(fā)探索多線程GCD隊(duì)列示例詳解
這篇文章主要為大家介紹了iOS開(kāi)發(fā)探索多線程GCD隊(duì)列示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
使用Xcode為iOS應(yīng)用項(xiàng)目創(chuàng)建PCH文件的方法及應(yīng)用示例
這篇文章主要介紹了使用Xcode為iOS應(yīng)用項(xiàng)目創(chuàng)建PCH文件的方法及應(yīng)用示例,PCH文件可以保留應(yīng)用的很多的基礎(chǔ)設(shè)置信息以供復(fù)用,需要的朋友可以參考下2016-03-03

