2014-12-04 15:45:55 aijiami0 阅读数 1717

        【iOS app加密】iOS app之游戏加密防破解。iOS app游戏类应用有一个很泛滥但被视为鸡肋的问题,那就是iOS app被破解的问题。因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早期象征性的收费,之后就会免费,所以很多开发者对iOS app游戏从只能在购买者设备安装变成可免费到处安装并不关注。

         App游戏被破解攻击可能是宿命,正所谓,哪里有游戏,哪里就有黑客,哪里就有破解。iOS app游戏没有加密而被破解的问题,其实不仅仅是iOS上,几乎所有平台上,无论是pc还是移动终端,都是顽疾。可能在中国这块神奇的国度,大家都习惯用盗版了,并不觉得这是个问题,iOS app游戏开发者被破解也是麻木了。甚至某些盈利性质的公司也这么想,并且还有些平台网站把盗版软件当成噱头,义正言辞地去宣传用盗版是白富美,买正版是傻X。其实iOS app没有加密被破解的问题,并不起源于中国。所以,广大iOS app游戏开发者还是需要了解如何保护iOS app加密防破解的技术。下面就来研究下iOS app之游戏加密防破解。

         1、事后检测

        在iOS app加密防破解方面,可以做事后检测,使得破解IPA无法正常运行以达到防御作用。

        而该如何做事后检测呢,最直接的检测方法是将破解前后文件系统的变化作为特征值来检测。通过分析PoedCrackMod源码,会发现根据破解前后文件时间戳的变化,或文件内容的变化为特征来判断是不可靠的,因为这些特征都可以伪造。

         2、函数名加密

         iOS app加密防破解,为0便是破解版。当检测出破解版本时注意,为了避免逆向去除检测函数,需要多处做检测。同时检测函数要做加密处理,例如iOS app函数名加密,并要在多处进行检测。

         iOS app破解所用的工具和方法都必须运行在越狱机上,因此将安全问题托付给苹果,幻想他可以将iOS系统做得无法越狱,他提供的一切安全措施都能生效(例如安全沙箱,代码签名,加密,ASLR,non executable memory,stack smashing protection)。这是不可能的,漏洞挖掘大牛门也不吃吃素的,所以自己的iOS app还是由自己来加密守护。

        具体方法如下

        1.URL编码加密

        对iOS app中出现的URL进行编码加密,防止URL被静态分析

        2.本地数据加密

        对NSUserDefaults,sqlite存储文件数据加密,保护iOS app的帐号和关键信息。

        3.网络传输数据加密

        对iOS app客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取

        4.方法体,方法名高级混淆

        对iOS app的方法名和方法体进行混淆,保证源码被逆向后无法解析代码

        5.程序结构混排加密

        对iOS app逻辑结构进行打乱混排,保证源码可读性降到最低

       目前有这一iOS app加密保护技术的是移动应用安全保护第三方平台爱加密。

 

2016-01-16 15:16:49 qiuxuewei2012 阅读数 2440

要将App配置为iOS路由App,请在iTunes Connect的我的App中的App版本页面上传App地区范围文件
解决办法:
这里写图片描述

把Map关掉!

2017-01-13 16:18:40 baidu_36500903 阅读数 1608
//检查商店版本
+ (void)judgeAppStoreVersion{
    [[NSUserDefaults standardUserDefaults] setObject:nil forKey:New_version];//将需要升级版本号写入本地
    [[NSUserDefaults standardUserDefaults] synchronize];
    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
    NSString * kpath = @"http://itunes.apple.com/lookup?bundleId=项目的bundleID&country=cn";
    [manager GET:kpath parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSDictionary *appInfo = (NSDictionary *)responseObject;
        NSArray *infoContent = [appInfo objectForKey:@"results"];
        NSString *version = [[infoContent objectAtIndex:0] objectForKey:@"version"];
        if ([self compareVersionWithServiceVersion:version]) {
            [[NSUserDefaults standardUserDefaults] setObject:version forKey:New_version];//将需要升级版本号写入本地
            [[NSUserDefaults standardUserDefaults] synchronize];
            [self alertUpdata];//提示用户需要升级
        }else{
            [[NSUserDefaults standardUserDefaults] setObject:nil forKey:New_version];//将需要升级版本号写入本地
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"查询iTunes应用信息错误:%@",error.description);
        [[NSUserDefaults standardUserDefaults] setObject:nil forKey:New_version];//将需要升级版本号写入本地
        [[NSUserDefaults standardUserDefaults] synchronize];
    }];
}
//检查是都是最新版本
+ (BOOL)compareVersionWithServiceVersion:(NSString *)servierVersion{
    NSLog(@"商店的版本是 %@",servierVersion);
    NSArray * serviceArr = [servierVersion componentsSeparatedByString:@"."];
    
    NSString * appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    NSLog(@"当前的版本是 %@",appVersion);
    NSArray * appArr = [appVersion componentsSeparatedByString:@"."];
    
    if (!serviceArr.count){
        return NO;
    }else{
        NSInteger compare = 0;
        if (serviceArr.count >= appArr.count) {
            compare = appArr.count;
        }else{
            compare = serviceArr.count;
        }
        for (int i = 0; i < compare; i++) {
            if ([serviceArr[i] integerValue] > [appArr[i] integerValue]) {
                return YES;
            }else if ([serviceArr[i] integerValue] == [appArr[i] integerValue]) {
                continue;
            }else{
                return NO;
            }
        }
        return NO;
    }
}
//跳转App Store
+ (void)downLoadNewVersionJumpAppStore{
    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id应用id"]];
}



                                
2018-10-08 16:07:57 blogdevteam 阅读数 1581

iOS版本APP全新上架啦

iOS版本APP全新上架啦

iOS版本APP全新上架啦,亲们需要卸载原来的APP,下载全新的APP使用。

可以扫码下方二维码直接下载最新版本

CSDN iOS APP 最新版

2016-05-05 11:38:52 csdn2314 阅读数 514


iOS APP版本检查更新:

下面的都是废话,是不能通过苹果审核的,APP更新现在直接发


布新版本就好,苹果内部会帮我们搞好。比如你之前发布了1.0版


本,现在想发布1.1版本或者更高的,你就直接在苹果开发者中


心:http://developer.apple.com 上传新版本就好。


iOS8之后用户可以设置连接WiFi后有新版本APP可以自动更新,


也可以手动在iPhone上打开APP Store 来更新,千万不能像下面


那样提醒用户有新版本可更新,那样几乎是不能通过苹果审核


的。




iOS8.0之后,苹果规定APP内不能出现“当前版本”之类的字样,以为iOS8.0之后用户可以设置在连接WiFi的情况下自动更新APP,但有些用户可能并不想更新APP,所以要在APP内提醒用户。


检查更新的步骤:


1.可以写个方法来获取APP Store上APP的版本号: (记得要遵循代理

NSURLConnectionDelegate

#pragma mark - 是否有新版本

- (void)isNewVersion{

    //判断 APP version, id 是自己 app 上架时的 Apple id

    NSString *urlStr =@"https://itunes.apple.com/lookup?id=1234567890";

    NSURL *url = [NSURLURLWithString:urlStr];

    NSURLRequest *request = [NSURLRequestrequestWithURL:url];

    [NSURLConnectionconnectionWithRequest:requestdelegate:self];

}


2.在回调方法中进行判断

- (void)connection:(NSURLConnection *)connection didReceiveData:(nonnullNSData *)data{

    NSError *error;

    //序列化

    id jsonObject = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingAllowFragmentserror:&error];

    NSDictionary *appInfo = (NSDictionary *)jsonObject;

    MCLog(@"%@",appInfo);

    

    NSArray *infoContent = [appInfoobjectForKey:@"results"];

    NSString *appVersion = [[infoContentobjectAtIndex:0]objectForKey:@"version"];

    MCLog(@"APP version is %@",appVersion);

  

//地址

    NSString *trackViewUrlStr = [[infoContentobjectAtIndex:0]objectForKey:@"trackViewUrl"];

    //当前版本

    NSString *currentVersion = [NSBundlemainBundle].infoDictionary[@"CFBundleShortVersionString"];

    MCLog(@"current version is %@",currentVersion);


    if (![appVersionisEqualToString:currentVersion]) {

        UIAlertController *alertController = [UIAlertControlleralertControllerWithTitle:@"检查更新"message:[NSStringstringWithFormat:@"发现新版本(%@),是否升级?",appVersion]preferredStyle:UIAlertControllerStyleAlert];

        

        UIAlertAction *cancalAction = [UIAlertActionactionWithTitle:@"取消"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *_Nonnull action) {

            

        }];

        

        UIAlertAction *confirmAction = [UIAlertActionactionWithTitle:@"升级"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction *_Nonnull action) {

            //点击升级,跳到APP store进行更新

            [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:trackViewUrlStr]];

        }];

        

        [alertController addAction:cancalAction];

        [alertController addAction:confirmAction];

        

        [self.window.rootViewControllerpresentViewController:alertControlleranimated:YEScompletion:nil];

    }

}





App检测版本更新 iOS

阅读数 3470

iOS app版本更新和版本号的比较

博文 来自: lfl18326162160

iOS 获取App名称,版本

博文 来自: X_X_J_49
没有更多推荐了,返回首页