Hook 简介
- Hook就是一种改变程序执行流程的一种技术的统称;
- 一段程序的执行流程是 A --> B --> C,现在我们在 A 和 B 之间插入一段代码或者直接改变 B ,这样程序原有的执行流程就发生了改变。如下图所示:
- Hook的方式:Method Swizzle,fishhook,Cydia Substrate;
Hook 原理
一、Method Swizzle 原理
- 利用OC的Runtime特性,动态去改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变的目的主要用于OC方法。
- Hook中主要用到的方法(参数: Class、SEL、IMP、Method):
// 1、方法交换
OBJC_EXPORT void