Theos如何hook一个类中的属性

如题,新手在学习中遇到这个问题。在一个类中有如下这样的一个属性,怎么hook修改其中的值呢。目前知道属性会生成两个实例方法,str和setStr方法,hook这俩方法目测没有更改,不知还有其他方法吗?求指导

@ interface ViewController : UIViewController

@ property (nonatomic, strong) NSString* str;

@ end

哎呀,为啥我的这么没人回复呢,连围观的都木有啊

get方法hook不了?

不行啊,理论上可行的方案,就是不知道为什么不行!而且我用ida看了一下,里面的确有get的方法,hook其他的普通方法都可行,就这个不行。奇怪了

你tweak怎么写的

%hook ViewController
- (NSString* ) str{
  NSString* data = @"这是Hook后的字符串!22222!!";
    return data;
}

- (void) setStr:(id)arg{
  NSString* data = @"这是Hook后的字符串!22222!!";
  %orig(data);

}
%end

这样的,getter和setter都加上了,还是不行

确定程序有调用get和set?

确定,专门写的测试app

哈哈,最后终于好使了!发现个问题,调用的时候直接用str访问的话hook不成功,如果用self.str的话就可以了。估计直接用str的话是直接访问这个变量了

建议学好正向开发,_str是直接访问,self.str才是调用get方法

嗯,我是搞android逆向的,刚开始搞ios的,OC的开发也刚看了几天。多谢了哈!!!