开发Tweak,如何新建一个类继承目标App里的已有基类?

最近在为一个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能否做到呢?

我想问的是这种需求是不是不可能做到?因为Link的时候编译器不可能找不到XXUIViewController的symbols。

编译原理,请

后来我想用runtime技术,比如object_setClass能否做到呢?

objc_getClass

我没有编译原理的知识,你的意思是这种需求不可能做到吗?

运行时的话,用objc_getClass获取XXUIViewController的class,然后我运行时新建SubUIViewController类,并且运行时让SubUIViewController类继承XXUIViewController类吗?这样做代码写起来太麻烦了,我还不如去hook一个目标App里已经继承了XXUIViewController的子类,然后去覆盖一些方法,并且把这个Controller修改成我想要的样子。但是这样做又会影响这个Controller原来的功能,还要找标识判断。

符号表 link 不到的,所以没办法建分类和继承。只能动态。

2 个赞

知道啦,谢谢!!!

发个广告 MUHook

1 个赞

这不就是我要找到东西吗!“创建一个二进制文件中的类的子类” 这太感谢了!我要好好研究研究

下面这种写法也是可以继承所逆向app的类
%SubUIViewController : XXUIViewController

%end

5 个赞