ios - 使 Theos Hook 到类的特定类别

标签 ios objective-c jailbreak theos logos

通常,当您进行调整并且想要挂接到应用程序时,您会执行以下操作:

%hook foo

//code    

%end

但现在我有一个 @interface 有一个奇怪的名字:@interface NSString (foo),我不知道如何连接到它。我试过这个:

%hook NSString (foo)



%end

但这给出了一个错误:

Tweak.xm:12:3: error: C++ requires a type specifier for all declarations
(foo)
~^Tweak.xm:12:18: error: expected ';' after top level declarator (foo):

最佳答案

@interface NSString (foo)

只是声明一个名为“foo”的自定义类别,它允许将其他方法声明为原始 NSString 类的一部分。您可以使用标准 Logo Hook ,就好像后面的方法属于 NSString 类一样。一个很大的异常(exception)是没有类类别的实例变量。这意味着 MSHookIvar 将不起作用。你的问题的简单例子 - 假设原始代码是:

@interface NSString (foo)
+(NSString *) someString;
@end

@implementation NSString (foo)
+(NSString *) someString 
{ 
//code that returns a string
}
@end

要覆盖该方法,您可以放置​​:

%hook NSString
+(NSString *) someString {
//code here
return someNewString;
}
%end

注意:只是在 iPhone 上输入并没有编译它,但它应该可以工作,或者至少这个概念应该更有意义。只需谷歌“使用 obj c apple 文档自定义现有类”以获取有关类类别的更多信息。

关于ios - 使 Theos Hook 到类的特定类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26328624/

相关文章:

ios - StartUpdateLocations在后台运行,didUpdatingToLocation仅调用10-20次

iOS 如何从另一个类访问 [tableView 重新加载数据]

iphone - 以编程方式确定 iPhone 是否越狱

ios - 无法从其 DataSource 获取单元格

ios - 在运行时从 View Controller 更改 UI

ios - 将麦克风静音

ios - 我需要制作一个同时显示文本和图像的 UISegmentedControl

ios - 当使用@dynamic在类别中添加@property时,getter/setter如何实现

iphone - iOS - 6755 文件属性在复制到设备时更改为 0755 - 越狱

objective-c - 越狱的 iOS 从后台应用程序截图