【问题标题】:Compiler errors with dumped headers when creating a Cydia Tweak with Theos使用 Theos 创建 Cydia Tweak 时带有转储头的编译器错误
【发布时间】:2012-12-15 04:44:34
【问题描述】:

我正在尝试为 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>

生成文件如下所示:

include theos/makefiles/common.mk

TWEAK_NAME = FooTweak
FooTweak_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

当我继续尝试编译我的 Tweak(此时它应该什么都不做)时,我想出了各种重复的声明错误。这是正常的,还是我做错了什么?

如果是正常的,我该如何纠正呢?我试过注释掉重复的声明,在这种情况下我可以让它编译。我已经插入了 20 多个在调用该方法时创建 UIAlertViews 的钩子,但它们似乎都没有触发 - 让我相信我没有钩住没有被调用的方法,但我正在制作转储标头或将标头导入我的调整时出错?

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

【问题讨论】:

    标签: cydia logos theos cydia-substrate


    【解决方案1】:

    不要使用 #import &lt;Foo/Foo.h&gt;

    相反

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

    【讨论】:

    • 这种方法奏效了。不过,我确实还需要做一件事,即编辑我的 FooTweak.plist 文件以包含应用程序的包名称而不是跳板。我不确定这是否是默认设置,或者我是否以其他方式更改了它。
    • 当你创建一个调整时,你可以写下你正在挂钩的应用程序/框架的标识符。如果某个特定的标头被挂钩,请包含使用该特定类的应用程序/框架的包标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多