1. instrumentObjcMessageSends辅助分析
在调用方法前后加上instrumentObjcMessageSends,运行后在文件夹\tmp\下会产生一个msgSends-开头的文件
打开文件看看
首先看见调用的是动态方法决议resolveInstanceMethod 后面调用的是forwardingTargetForSelector:
和methodSignatureForSelector: (其实就是快速转发和慢速转发~)
2.forwardingTargetForSelector快速转发
先看下官方文档
找个替代对象去实现
执行 看下输出
完美
3.methodSignatureForSelector慢速转发
返回一个NSMethodSignature对象
关联方法
代码实现:
运行:
5.反汇编工具
前面我们是开的上帝视角了解了forwardingTargetForSelector:和methodSignatureForSelector就是消息转发 ,如果不知道呢 那么我们先看堆栈信息 回到最初的方法没实现的崩溃阶段
我们看到是CoreFoundation ,但是源码文件里面也没有,只好用反汇编工具了
网上有破解版的~~
通过image list 找到镜像文件的路径
拖拽到工具中
接下来我们全局搜索forwarding
只截了一些重点 实在太多了
通过反汇编工具我们其实也是可以找到快速转发和慢速转发的相关方法~~