我正试图在iPhone上为应用编写一个调整。我在目标C和iPhone开发方面有很好的背景,但我从未做过任何Cydia越狱调整,除了使用rpetrich的转储标题进行调整的一些教程。我希望使用PoedCrackMod解密,使用class-dump-z来获取标题,然后使用theos / logos来修补破解的应用程序。
我已经开始运行PoedCrackMod来解密应用程序。这会产生一个.ipa文件,然后我可以提取它来获取.app文件,其中包含实际的应用程序二进制文件。
我可以使用
class-dump-z -k -k -H -g -o ~/dumped_headers/ Foo
继续获取头文件目录。我将这些标题复制到$ THEOS / include / Foo。 (我应该在这里使用-g选项[仅显示导出的类],还是可以挂钩非导出的类?)
此时,我应该能够创建一个如下所示的tweak.xm文件:
#import <Foo/Foo.h>
以供参考,makefile如下所示:
include theos/makefiles/common.mk
TWEAK_NAME = FooTweak
FooTweak_FILES = Tweak.xm
include $(THEOS_MAKE_PATH)/tweak.mk
当我继续尝试编译我的Tweak(此时应该什么也不做)时,我想出了各种重复声明错误。这是正常的,还是我做错了什么?
如果是正常的,我该如何纠正?我试过注释掉重复的声明,在这种情况下我可以让它编译。我已经插入了20多个在调用方法时创建UIAlertViews的钩子,但是它们似乎都没有触发 - 让我相信我没有挂钩那些没有被调用的方法,而是我要么做转储标题或将标题导入我的调整时出错?
有没有人对我可能做错了什么有任何见解?
答案 0 :(得分:1)
请勿使用 #import <Foo/Foo.h>
相反
[File] tweak.xm:
#import <substrate.h>
@interface FooToBeHookedHeader : NSObject {} // We take NSObject here as to avoid any errors.
- (void)fooMethod1; // Only put the methods you are hooking
- (void)fooInheritedMethod; // Inherited method (if hooking) as we are using NSObject up there :)
@end
%hook FooToBeHookedHeader
- (void)fooMethod1 {
// Do hooking stuff
}
- (void)fooInheritedMethod {
// Do hooking stuff
}
%end
// Include any instance variables which you are modifying if any :)
// ~ SuperDev
还包括挂接在FooTweak.plist
中的App / Framework的标识符