我一直试图弄清楚我下载的应用中的某个功能是如何工作的,但我似乎无法得到它。到目前为止,我设法获得了功能代码,但它不可读。我真正需要的只是看看其中一个论点是什么,但我不知道如何做到这一点。
我的手机越狱了,所以我安装了Flex,但除了对返回值和参数值进行调整外,似乎没什么可提供的,这对其他事情很有帮助。
我尝试进行MobileSubstrate调整,但只要我用make
编译它就会出错。
*** first argument to word function must be greater than 0. Stop.
%hook TestClass
- (id)function {
return "test";
}
%end
是否有另一种方法来覆盖函数并记录其参数?或者也许有一些调试工具会为我记录每一件事,我可以找到我正在寻找的东西?任何帮助表示赞赏。感谢。
答案 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说错了,你不能用%@
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