Substrate 能否hook到一个类的property get方法呢?

比如,NSData类的只读属性 @property(readonly) NSUInteger length
我这样写的,但是不起效:
%hook NSData
-(NSUInteger) length
{
NSLog(@"—hit—");
return %orig;
}
%end

get方法的话你要hook的方法是:getLength

多谢回答。:grinning:
我试了下,把 -(NSUInteger) length 改成 -(NSUInteger) getLength
hook不到,控制台日志显示有警告:
MS:warning: message not found [NSData getLength]

同样遇到这个问题,求大神回答

我刚刚又试了一下, 可以hook的到。。。

我原来的疑问是:hook get方法的时候,怎么访问原来的成员变量?

正向开发的写法是:
@interface MYObject : NSObject {
NSString *str;
}
@propery NSString *str;
@end

- (NSString *) str {
     
     return [NSString stringWithFormat:@"新的字符串%@",self->str];
}

但是写Tweak的时候报错 error: instance variable ‘str’ is protected

后来写成:

  • (NSString *) str {

    return [NSString stringWithFormat:@“新的字符串%@”,%orig];
    }

就没问题了

1 个赞