【发布时间】:2014-11-05 06:55:10
【问题描述】:
我使用rpetrich's theos 创建了一个调整项目并想挂钩 NSURLSession 方法,但挂钩似乎没有被调用?为什么?这是我的 Tweak.xm 代码:
%hook NSURLSession
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler
{
NSLog(@"testhook dataTaskWithRequest:completionHandler:");
return %orig(request, completionHandler);
}
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
{
NSLog(@"testhook dataTaskWithRequest");
return %orig(request);
}
%end
%hook NSMutableURLRequest
+ (id)requestWithURL:(NSURL *)URL
{
NSLog(@"testhook NSMutableURLRequest");
return %orig(URL);
}
%end
我添加了NSMutableURLRequest 挂钩以确保正在加载文件和整个调整。我可以验证它确实挂钩 requestWithURL: 但不是任何 NSURLSession 方法。我正在测试来自NSURLSessionExample 的代码。
这里缺少什么?有人成功上钩了 NSURLSession 吗?
【问题讨论】:
-
这个调整的过滤器是什么?另外:你用于钩子的语法是 Logos,而不是 Theos,所以你应该用它而不是 Theos 来标记问题。
-
@AehmloLxaitn 我使用了
{ Filter = { Bundles = ( "com.ravi.NSURLSessionExample" ); }; },它是测试应用程序的捆绑包 ID。NSMutableRequest钩子起作用了,所以我想我的过滤器正确吗?我添加了logos标签。无论如何我都输入了theos,因为logos是theos的子组件。
标签: iphone jailbreak nsurlsession theos logos