【问题标题】:Theos instance method callingTheos 实例方法调用
【发布时间】:2014-02-08 10:45:47
【问题描述】:

我已经搜索过这个问题的答案,但找不到。

如何在我的 Theos 调整中挂接的同一类中调用实例方法? 如果我使用标准 Xcode,我会使用 self 方法,即-

[self method:arg];

但是在一个 theos 调整中,这表示找不到该方法,即使我挂钩该方法。

示例:

%hook classimhooking

-(void)methodimhooking
{
    [classimhooking methodiwanttocall];
    [self methodiwanttocall];
    %orig;
}

-(void)methodiwanttocall
{
    %orig;
}

%end

methodiwanttocall 在那里,我可以连接到它,只是不调用它。 我尝试使用%new 添加一个新方法并调用它,但没有找到,我尝试过同样的延迟,但没有找到。 我尝试定义我的班级的一个变量并调用它,但它不起作用。

我也可以看到你可以直接抓取 iVars,但这不适用于方法。

任何想法都将不胜感激。

【问题讨论】:

  • 你的问题不是很清楚。建议写这个 [self 方法:arg];在控制器的 viewdidload 方法中。 viewdidload 在加载视图控制器时调用。以及这些 %orig 是什么。
  • 这些是调用我正在挂钩的类的原始方法的 Theos 指令。这个问题仅与 theos 相关,因为您所写的内容确实适用于标准目标 c。
  • 我真的很抱歉。我不知道。会尽快回复你。谢谢
  • 你想调用你要挂钩的方法还是其他方法?
  • 我正在挂钩的类中的另一个方法。

标签: ios iphone objective-c jailbreak theos


【解决方案1】:

如果你想在你刚刚挂钩的对象上调用一个方法,你可以使用performSelector(或者performSelector:withObject:,如果它有一个参数),应该是这样的:

[self performSelector:@selector(methodiwanttocall)];

【讨论】:

  • 虽然编译得很好,但该方法没有被调用。我尝试了一些方法,但没有一个被调用。是否需要更改 self ,因为 self 引用的是tweak.xm 而不是钩子类?
  • 我认为您可以参考self 它实际上是传递给函数的第一个参数,因此应该可用...我不清楚为什么它不起作用,但我很快就能检查出来
【解决方案2】:

抱歉挖了一个旧线程。我可能对这里的问题有一个想法。万一遇到同样问题的人。

问题是编译器不知道有这样的方法,即使有。处理的方法是在代码顶部导入header。

#import <classimhooking>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2014-10-12
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多