1

我正在尝试为 iPhone 上的应用程序编写调整。我在 Objective 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 的钩子,但它们似乎都没有触发 - 让我相信我没有钩住没有被调用的方法,但我要么在做转储标头或将标头导入到我的调整中是否有错误?

有没有人对我可能做错了什么有任何见解?

4

1 回答 1

1

不使用 #import <Foo/Foo.h>

反而

[文件]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 的标识符

于 2013-01-01T09:26:28.800 回答