如何检测破解的iPhone应用程序和越狱设备(不同的方法)

Rob*_*bse 12 iphone protection cracking detection piracy-protection

我正在为破解的iPhone应用程序构建黑名单服务,如果我错过了检测破解应用程序的方法,我很好奇.

在下面的应用程序裂缝检测方法可用于该服务:

  1. 检查plist大小
  2. 检查签名者身份
  3. 检查二进制文件是否被加密(不确定这是否正常,因为没有以这种方式检测到破解的应用程序)
  4. 检查修改日期的info.plist针对包的修改日期(不知道这是工作-使用如下代码:http://snippie.net/snip/f7530ff2做到这一点)

我也想知道是否有可能检查设备是否已越狱?这也有帮助,因为该服务将像垃圾邮件黑名单一样工作,越狱可用于提高分数.

我还包括一个蜜罐,它告诉我,破解者使用的工具消除了我做的一些检查.例如,plist检查大小或签名者身份.

我现在的问题是:

  • 我应该使用更多"好"的支票吗?

  • 有没有办法检测越狱?

谢谢你的帮助!

Kyl*_*lls 18

永远不要试图阻止越狱设备使用您的应用程序,只是破解.如果你阻止越狱设备,他们将被迫使用修补版本,删除所有检查.
我的所有设备都被越狱了,所以如果开发人员阻止越狱设备,我将不得不忽略他们的应用程序.超过10%的iDevices都被越狱了,所以这是一个非常糟糕的主意.

编辑:因为我得到了很多投票,我会发布一些方法来检测越狱.

- (BOOL)fileExistsAtPath:(NSString *)path{
    NSLog(@"Check if file '%@' exists", path);

    struct stat buffer;   
    return stat([path UTF8String], &buffer) == 0;
}

- (BOOL)jailbroken{
    return ([self fileExistsAtPath:@"/Applications/Cydia.app"]);
}
Run Code Online (Sandbox Code Playgroud)

  • 我不明白那些投票给你的人.我自己,我越狱,以测试我的应用程序的盗版保护.这些投票的人现在会把我送到关塔那摩吗? (6认同)
  • 我知道很多人越狱只是为了添加App Store中不允许的调整和特定应用程序.这些人仍然选择从App Store购买应用程序. (6认同)
  • 或者他们将被迫删除越狱,禁用网络,并停止使用App Store中的应用程序.由于盗版,这10%的9%被越狱... (3认同)
  • 第一行+1(我正在看着你,Skype!) (2认同)

Seu*_*Ham 7

-(IBAction)rootCheck:(id)sender {

    NSArray *jailbrokenPath = [NSArray arrayWithObjects:
                               @"/Applications/Cydia.app",
                               @"/Applications/RockApp.app",
                               @"/Applications/Icy.app",
                               @"/usr/sbin/sshd",
                               @"/usr/bin/sshd",
                               @"/usr/libexec/sftp-server",
                               @"/Applications/WinterBoard.app",
                               @"/Applications/SBSettings.app",
                               @"/Applications/MxTube.app",
                               @"/Applications/IntelliScreen.app",
                               @"/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
                               @"/Applications/FakeCarrier.app",
                               @"/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
                               @"/private/var/lib/apt",
                               @"/Applications/blackra1n.app",
                               @"/private/var/stash",
                               @"/private/var/mobile/Library/SBSettings/Themes",
                               @"/System/Library/LaunchDaemons/com.ikey.bbot.plist",
                               @"/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
                               @"/private/var/tmp/cydia.log",
                               @"/private/var/lib/cydia", nil];

    NSString *rooted;
    for(NSString *string in jailbrokenPath)
        if ([[NSFileManager defaultManager] fileExistsAtPath:string])
            rooted=@"y";
        else
            rooted=@"n";

    NSLog(@"%@", rooted);
}
Run Code Online (Sandbox Code Playgroud)

示例代码:http: //www.evernote.com/shard/s13/sh/e45f27ee-3dd5-4eb1-9f56-1981cdd3286b/bc156eb773315647c13c2c7ee4191866

  • 尼斯.但哇,那一定是旧代码!RockApp在一年前被cydia收购了,而且冰冷已经被放弃了更长时间(+ blackra1n是3.1的越狱). (2认同)
  • 另外,当打印出“ rooted”时,您只会看到“ [[[NSFileManager defaultManager]] fileExistsAtPath:@” / private / var / lib / cydia”的结果吗?@“ y”:@“ n”;`,即数组中的最后一个元素。此代码将忽略/覆盖/丢弃所有其他结果。 (2认同)