
這個效果在逆向中難度是最低的,適合新手練習(xí)。涉及一些基礎(chǔ)的知識,如如何讀取本地圖片,imageNamed可不行;如何調(diào)用oc文件,實現(xiàn)多文件操作,避免多個文件在一起顯得臃腫,另外動畫的實現(xiàn)可要花一些時間調(diào)試。
1.先找到聊天界面的Controller及view,了解其層級結(jié)構(gòu)
1.1打開Reveal

一眼就看到Y(jié)YTableView,從這里切入好了。
1.2 通過Cycript查找聊天界面的Contrller

ssh連接手機終端->cycript -p WeChat->查找YYTableView->通過nextResponder找到BaseMsgContentViewController
1.3通過setTitle方法來驗證下BaseMsgContentViewController是不是我們要的

2.調(diào)用OC文件需要做哪些配置呢?
2.1 BalloonFlyView是動畫類,這個在XCode調(diào)好
2.2 如何調(diào)用BalloonFlyView類呢?
工程目錄下新建src文件夾,把BalloonFlyView放入該文件夾下

2.3Makefile配置src文件
找到Makefile->iOSREProject_FILES
.m文件改.xm,xm與oc中的.mm類似,這樣Tweak可引用到OC文件
*是通配符,及src下的所有.m文件都可以引用

2.4 引入頭文件并調(diào)用
#import "src/BalloonFlyView.h"
BalloonFlyView *vi = [[BalloonFlyView alloc] initWithFrame:CGRectZero];
[vi showAnimationInView:self.view];
2.5如何引用圖片?
1.圖片需要放在/Library/PreferenceLoader/Preferences/路徑

2.可再項目中定義宏:#define CHFile(path) [NSString stringWithFormat:@"/Library/PreferenceLoader/Preferences/%@",path]
3.調(diào)用[UIImage imageWithContentsOfFile:CHFile(imageNamed)]
3.hook聊天界面方法,插入動畫
hook BaseMsgContentViewController
3.1在viewWillAppear設(shè)置背景,添加定時器調(diào)用動畫

3.2 在viewWillDisappear釋放定時器

總結(jié):
1.沒有源碼的技術(shù)文章就是刷流氓,附上demo
2.文中flyTimer使用的是靜態(tài)全局變量,如何給hook的類添加屬性,請讀者思考。
3.如果方法在protocol,我們?nèi)绾蝖ook;如果是block回調(diào),我們怎么hook;請讀者再思考。
4.有任何問題可留意交流
iOS逆向?qū)崙?zhàn)一:實現(xiàn)按下home鍵截屏,如何使用hook的對象屬性
iOS逆向?qū)崙?zhàn)二:微信聊天界面實現(xiàn)飄氣球效果
iOS逆向?qū)崙?zhàn)三:修改微信錢包零錢
iOS逆向?qū)崙?zhàn)四:去優(yōu)酷廣告