苹果私有字符串规避审核方法

一、苹果禁止使用私有API,以及私有的一些字符串

  比如:

    let url = NSURL(string: "prefs:root=SAFARI")!

  因为出现了prefs:root=SAFARI,现在有人想用下面的字符串规避

NSData *prefs = [[NSString stringWithFormat:@"%@%@%@%@",@"APP",@"-p",@"refs:r",@"oot=WIFI"] dataUsingEncoding:NSUTF8StringEncoding];

  反编译一下看看生成的二进制代码

  

  这些私有的字符串截断存储在一起,如果苹果采用别的方式,很容易判断使用了私有方法。

二、解决办法

  如果苹果允许参数为变量的方式,那么问题只剩下在运行中怎么生成想要的参数,这里给出我的方式

  

使用方法:

- (void)openWIFI
{
    NSString *xxx = @"YnBsaXN0MDDUAQIDBAUGFRZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0\
    b3ASAAGGoKQHCA0OVSRudWxs0gkKCwxXY29udGVudFYkY2xhc3OAAoADXxAYYXBw\
    LXNldHRpbmdzOnJvb3Q9U291bmRz0g8QERJaJGNsYXNzbmFtZVgkY2xhc3Nlc1tG\
    dW5ueVN0cmluZ6ITFFtGdW5ueVN0cmluZ1hOU09iamVjdF8QD05TS2V5ZWRBcmNo\
    aXZlctEXGFRyb290gAEIERojLTI3PEJHT1ZYWnV6hY6anamyxMfMAAAAAAAAAQEA\
    AAAAAAAAGQAAAAAAAAAAAAAAAAAAAM4=";
    
    NSLog(@"src str = %@", [FunnyTool sourceStringFromFunnyString:xxx]);
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSURL *url = [NSURL URLWithString:[FunnyTool sourceStringFromFunnyString:xxx]];
        //        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
        [[UIApplication sharedApplication] openURL:url
                                           options:@{}
                                 completionHandler:^(BOOL success) {
                                     NSLog(@"open %@ return %@", url, @(success));
                                 }];
    });

}

 

总结:

目前来看base64之后的私有方法名字字符串不会被扫描到,如果你需要加强,可以把base64后的字符串再次加密。

代码:

https://files.cnblogs.com/files/doudouyoutang/%E5%BD%92%E6%A1%A3.zip

猜你喜欢

转载自www.cnblogs.com/doudouyoutang/p/9273850.html
今日推荐