帮助破译iPhone应用程序代码

时间:2010-08-10 22:37:57

标签: iphone objective-c

有人可以帮我解密一下这段代码吗?它是在用户按下按钮提交数据时执行的,或者在这种情况下,是iPhone应用程序中的“问题”。

我知道它正在将字符串发送到服务器上托管的phpscript.php,但我不熟悉的是发生的一长串命令。

NSUserDefaults *p = [NSUserDefaults standardUserDefaults];
[p setObject:[NSString stringWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://website.com/phpscript.php?user=%@&pass=%@&cat=%@&sub=%@&body=%@",[[p valueForKey:@"user"] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],[[p valueForKey:@"pass"] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],sport,@"",[[tvQ.text stringByReplacingOccurrencesOfString:@"\n" withString:@" "] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]]] forKey:@"q"];

2 个答案:

答案 0 :(得分:8)

将其分解使其更容易。

NSUserDefaults *p = [NSUserDefaults standardUserDefaults];
NSString* string1 = [[p valueForKey:@"user"] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString* string2 = [[p valueForKey:@"pass"] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString* string3 = [[tvQ.text stringByReplacingOccurrencesOfString:@"\n" withString:@" "] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString* urlString = [NSString stringWithFormat:@"http://website.com/phpscript.php?user=%@&pass=%@&cat=%@&sub=%@&body=%@",string1,string2,sport,@"",string3];
id val1 = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
[p setObject:val1 forKey:@"q"];

因此p是从用户默认值加载的字典对象,看起来像是一些可能在上次运行应用程序时保存的登录凭据。

stringByAddingPercentEscapesUsingEncoding是一种标准方法,可以安全地传输请求中的''(空格)或'%'等字符。它应用于字符串以确保请求将像预期的那样到达服务器。

String1和String2可能是用户名和密码。 String3是我猜的查询的主体。

当构建URL时,它执行urlString表示的查询(执行fetch时代码将在此时暂停 - 希望整个块已经在辅助线程上)。查询结果存储在字典p中,可以通过密钥@“q”访问。

明确处理&符号:

[myString replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:wholeString];

此方法可以应用于任何字符串 - 如果它应用于同一个字符串两次,那么第二次它将不执行任何操作。

答案 1 :(得分:3)

它正在从tvQ.text创建一个用空格替换任何新行的字符串,然后使用上面的字符串和其他抓取的字符串创建网址字符串(用户默认值中的值,从外观事情)。然后在此url字符串中修复百分比转义,然后从NSString创建NSURL对象。然后将此NSURL设置为用户默认值中键“q”的对象。

这让我头疼。