如何检测设备上是不是安装了 AppSync?

Posted

技术标签:

【中文标题】如何检测设备上是不是安装了 AppSync?【英文标题】:How to detect whether AppSync is installed on device?如何检测设备上是否安装了 AppSync? 【发布时间】:2012-10-25 21:48:58 【问题描述】:

AppSync 会导致 iCloud 和应用内购买出现一些问题,因此我想检测它是否存在于设备上以处理 iCloud 和 IAP 的奇怪行为。有什么办法知道吗?

设备越狱没关系,但 AppSync 会阻止我的应用程序正常工作,而且这显然是“黑客的痕迹”。

【问题讨论】:

【参考方案1】:

我已经搜索并找到了 AppSync 的痕迹,这里是找出它是否存在于设备上的代码。是的,它比需要的时间长一点,但我想确定一下。当然在发布代码中你应该以某种方式混淆字符串,但就是这样:

bool isAppSyncExist()

    BOOL isbash = NO;
    BOOL isappsync = NO;
    FILE *f = fopen("/bin/bash", "r");
    if (f != NULL)
    
        //Device is jailbroken
        isbash = YES;
        fclose(f);
    

    if (isbash)
    
        f = fopen("/Library/MobileSubstrate/DynamicLibraries/AppSync.plist", "r");
        if (f != NULL)
        
            isappsync = YES;
            fclose(f);
        
        if (isappsync == NO)
        
            NSError *err;
            NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/private/var/lib/dpkg/info" error:&err];

            for (int i = 0; i < files.count; i++)
            
                NSString *fname = [files objectAtIndex:i];
                if ([fname rangeOfString:@"appsync" options:NSCaseInsensitiveSearch].location != NSNotFound)
                
                    isappsync = YES;
                    break;
                
            
        
        if (isappsync == NO)
        
            NSError *err;
            NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"/var/lib/dpkg/info" error:&err];

            for (int i = 0; i < files.count; i++)
            
                NSString *fname = [files objectAtIndex:i];
                if ([fname rangeOfString:@"appsync" options:NSCaseInsensitiveSearch].location != NSNotFound)
                
                    isappsync = YES;
                    break;
                
            
        
    

    return isappsync == YES;

【讨论】:

以上是关于如何检测设备上是不是安装了 AppSync?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 x64 Windows 上是不是安装了 32 位 Java,仅查看文件系统和注册表?

如何检测 Chrome 中是不是安装了 Google Cast 扩展程序?

安装引导程序如何检测是不是安装了先决条件?

如何判断 手机上是不是安装 某个app 比如百度地图

无法确定 Android 设备上是不是安装了 Google Play 商店

Flutter 如何检测到安装了 VSCode?