13.反HOOK防护(一):基于Fishhook
1.1 在哪里防护
a.Framework里
1.2 操作一下
a. 创建一个Framework
b. 引入fishhook、objc/message.h
c. 在Framework中创建一个类,防护 method_exchangeImplementations
method_exchangeImplementations+ (void)load {
struct rebinding exchange;
exchange.name = "method_exchangeImplementations";
exchange.replacement = my_axchange;
exchange.replaced = (void *)&sysExchangePoint;
struct rebinding bds[] = { exchange };
rebind_symbols(bds, 1);
}
// 保存原函数的指针,这个可以暴露给自己使用
void (*sysExchangePoint)(Method _Nonnull methA, Method _Nonnull methB);
void my_axchange(Method _Nonnull methA, Method _Nonnull methB) {
NSLog(@"⚠️检测到了Hook!");
}d. 注入

1.3 缺点
a. 字符串
b. 时间
c. get set IMP 没处理
Last updated