求教,如何hook一个静态(non-instance)的方法

  • 一个instance方法getMyName,如:

@interface CustomViewController
-(NSString*)getMyName;
@end

  • 用CaptainHook一般的方式就可以了:

CHDeclareClass(CustomViewController)

CHOptimizedMethod(0, self, NSString*, CustomViewController,getMyName){
…………
}
CHLoadLateClass(CustomViewController);
CHClassHook(0, CustomViewController, getMyName);

  • 一个静态(non-instance)的方法,用了上面的方法不起作用,不知道为什么,求教。

@interface CustomViewController
+(NSString*)getMyName;
@end

Mark

已经解决,解决方式:
在 CaptainHook.h 中增加定义:

#define CHLoadMetaClass(name) CHLoadClass_(&name ## $, objc_getMetaClass(#name))


CHDeclareClass(CustomViewController)
换成
CHLoadMetaClass(CustomViewController)。

诚心默念logos好,教你脱险莫拒绝。
上网搜索九评CaptainHook有真相