Hook一个类的对象方法, 无法使用self

求问大神, 这里为什么不用self . 我按照书上的思路 调用该对象的其他方法. 但是编译不通过

错误详细信息是:
Receiver type ‘CityListViewController’ for instance message is a forward declaration

描述:
最近找工作, 手机上的赶集网更新后, 发生闪退, 进不了主页. 对其进行了逆向分析后, 发现跳过这个页面就可以正常使用了. 然后我打算编写tweak安装到手机上时, 发现了这个编译问题.
百度谷歌无果, 恳请各位大大给点思路.

Tools: Xcode + MonkeyDev + Theos
Device: iPhone 6
OS: iOS 9.3.3



// 首先这样声明下,或者直接导入Class的头文件,下面的代码是用 AppDelegate做的正确示范
@interface AppDelegate
-(void)test;//这里加上你要调用的方法
@end

@class AppDelegate;

%hook AppDelegate


%new
+(void)test{
    
    NSLog(@"test-yuzhouheike");
}

+(void)load{
    %orig;
    %log;
    
    [self test];
    
    %orig;
}

%end
1 个赞

大佬解答得清晰简洁! 感谢!

刚好我也找到个替代的方法. 抛砖引玉一下:
objc_msgSend( self, @selector(popCityViewController) );
这样也可以实现调用.

都是从不会到会的.相互学习.谢谢

这个分析过程可以整理一下分享给大家吗?这类帮别人修bug的例子,非常有吸引力和说服力

:grin: 等完美解决了我整理一下, 现在还有问题, 定位不了,不是可用状态.

谢谢兄弟, 也解决了我的问题

1 个赞