iOS应用程序的记录功能参数

时间:2014-08-12 13:54:35

标签: ios jailbreak cydia

我一直试图弄清楚我下载的应用中的某个功能是如何工作的,但我似乎无法得到它。到目前为止,我设法获得了功能代码,但它不可读。我真正需要的只是看看其中一个论点是什么,但我不知道如何做到这一点。

我的手机越狱了,所以我安装了Flex,但除了对返回值和参数值进行调整外,似乎没什么可提供的,这对其他事情很有帮助。

我尝试进行MobileSubstrate调整,但只要我用make编译它就会出错。

*** first argument to word function must be greater than 0. Stop.

%hook TestClass

- (id)function {
    return "test";
}
%end

是否有另一种方法来覆盖函数并记录其参数?或者也许有一些调试工具会为我记录每一件事,我可以找到我正在寻找的东西?任何帮助表示赞赏。感谢。

3 个答案:

答案 0 :(得分:1)

您可以将给予函数的参数打印到控制台。 (系统日志)。

%hook TestClass

-(void)functionName:(BOOL)isFunction {
     %orig;
    NSLog(@"%@",isFunction);
}
%end

(BOOL)是功能但可能不知道。但是通过转储标题,你可以得到类似的东西 - (void)functionName:(id)arg1;。然后,您可以像上面所示简单地将arg1打印到控制台。

答案 1 :(得分:0)

据我所知,您收到的“theos”错误意味着您的sdks文件夹中没有SDK。

如果您正在尝试查找参数的类型,可以使用该方法中的UIAlertView进行检查。

%hook HookedClass

- (void)someMethod:(id)arg1 {

    // call original method
    %orig;

    // whenever the method is called show type and value using UIAlertView
    UIAlertView *className = [[UIAlertView alloc] 
        initWithTitle:[NSString stringWithFormat:@"arg1 is a %@",[arg1 class]] 
        message:[NSString stringWithFormat:@"value: %@",arg1] 
        delegate:nil 
        cancelButtonTitle:@"Okay" 
        otherButtonTitles:nil];
    [className show];
    [className release];
}

%end

或者您只需使用其中一个徽标指令%log进行记录(您需要安装syslog来检查日志):

%hook HookedClass

- (void)someMethod:(id)arg1 {
     %log;
     %orig;
}
%end

您可以了解有关徽标指令here

的更多信息

Ben Gerard说错了,你不能用%@

记录一个bool
For NSString you use %@
For int  you use %i
For float you use %f
For double you use %lf

答案 2 :(得分:0)

我在调整中使用此%log来在控制台日志中查看。

%hook TestClass

-(void)functionName:(BOOL)isFunction {
     %log;
     %orig;
}
%end