shangkai
(shangkai)
1
最近在为一个App开发Tweak,我逆向这个App,知道里面有一个基类叫:XXUIViewController,这个App里的大量界面都是继承这个基类的。现在我想新开发一个界面,在我的Tweak里新建一个SubUIViewController也继承这个XXUIViewController,我把XXUIViewController头文件导了出来,并且在SubUIViewController的头文件里引入了XXUIViewController的头文件,就像下面这样:
#import "XXUIViewController.h"
@class XXUIViewController;
@interface SubUIViewController : XXUIViewController
@end
但是编译的时候Link错误:
Undefined symbols for architecture armv7:
“OBJC_CLASS$_XXUIViewController”, referenced from:
我想问的是这种需求是不是不可能做到?因为Link的时候编译器不可能找不到XXUIViewController的symbols。
后来我想用runtime技术,比如object_setClass能否做到呢?
Zhang
2
我想问的是这种需求是不是不可能做到?因为Link的时候编译器不可能找不到XXUIViewController的symbols。
编译原理,请
后来我想用runtime技术,比如object_setClass能否做到呢?
是objc_getClass
shangkai
(shangkai)
3
我没有编译原理的知识,你的意思是这种需求不可能做到吗?
运行时的话,用objc_getClass获取XXUIViewController的class,然后我运行时新建SubUIViewController类,并且运行时让SubUIViewController类继承XXUIViewController类吗?这样做代码写起来太麻烦了,我还不如去hook一个目标App里已经继承了XXUIViewController的子类,然后去覆盖一些方法,并且把这个Controller修改成我想要的样子。但是这样做又会影响这个Controller原来的功能,还要找标识判断。
符号表 link 不到的,所以没办法建分类和继承。只能动态。
2 个赞
shangkai
(shangkai)
7
这不就是我要找到东西吗!“创建一个二进制文件中的类的子类” 这太感谢了!我要好好研究研究
下面这种写法也是可以继承所逆向app的类
%SubUIViewController : XXUIViewController
%end
5 个赞