iOS逆向实战二:微信聊天界面实现飘气球效果

实现效果.gif

这个效果在逆向中难度是最低的,适合新手练习。涉及一些基础的知识,如如何读取本地图片,imageNamed可不行;如何调用oc文件,实现多文件操作,避免多个文件在一起显得臃肿,另外动画的实现可要花一些时间调试。

1.先找到聊天界面的Controller及view,了解其层级结构

1.1打开Reveal

iOS逆向实战二:微信聊天界面实现飘气球效果_第1张图片
微信聊天界面

一眼就看到YYTableView,从这里切入好了。

1.2 通过Cycript查找聊天界面的Contrller

iOS逆向实战二:微信聊天界面实现飘气球效果_第2张图片
查找聊天界面的Controller

ssh连接手机终端->cycript -p WeChat->查找YYTableView->通过nextResponder找到BaseMsgContentViewController

1.3通过setTitle方法来验证下BaseMsgContentViewController是不是我们要的

setTitle

2.调用OC文件需要做哪些配置呢?

2.1 BalloonFlyView是动画类,这个在XCode调好

2.2 如何调用BalloonFlyView类呢?

工程目录下新建src文件夹,把BalloonFlyView放入该文件夹下

iOS逆向实战二:微信聊天界面实现飘气球效果_第3张图片
新建src文件夹

2.3Makefile配置src文件

找到Makefile->iOSREProject_FILES
.m文件改.xm,xm与oc中的.mm类似,这样Tweak可引用到OC文件
*是通配符,及src下的所有.m文件都可以引用

配置FILES

2.4 引入头文件并调用

#import "src/BalloonFlyView.h"
BalloonFlyView *vi = [[BalloonFlyView alloc] initWithFrame:CGRectZero];
[vi showAnimationInView:self.view];

2.5如何引用图片?

1.图片需要放在/Library/PreferenceLoader/Preferences/路径

iOS逆向实战二:微信聊天界面实现飘气球效果_第4张图片
图片资源路径

2.可再项目中定义宏:#define CHFile(path) [NSString stringWithFormat:@"/Library/PreferenceLoader/Preferences/%@",path]
3.调用[UIImage imageWithContentsOfFile:CHFile(imageNamed)]

3.hook聊天界面方法,插入动画

hook BaseMsgContentViewController

3.1在viewWillAppear设置背景,添加定时器调用动画

iOS逆向实战二:微信聊天界面实现飘气球效果_第5张图片
设置背景添加定时器

3.2 在viewWillDisappear释放定时器

iOS逆向实战二:微信聊天界面实现飘气球效果_第6张图片
释放定时器

总结:

1.没有源码的技术文章就是刷流氓,附上demo
2.文中flyTimer使用的是静态全局变量,如何给hook的类添加属性,请读者思考。
3.如果方法在protocol,我们如何hook;如果是block回调,我们怎么hook;请读者再思考。
4.有任何问题可留意交流

iOS逆向实战一:实现按下home键截屏,如何使用hook的对象属性
iOS逆向实战二:微信聊天界面实现飘气球效果
iOS逆向实战三:修改微信钱包零钱
iOS逆向实战四:去优酷广告

你可能感兴趣的:(iOS逆向实战二:微信聊天界面实现飘气球效果)