帮助破译iPhone应用程序代码

Big*_*ike 3 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"];
Run Code Online (Sandbox Code Playgroud)

Ada*_*ach 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"];
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

明确处理&符号:

[myString replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:wholeString];
Run Code Online (Sandbox Code Playgroud)

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