保护iPhone应用程序免受黑客攻击

时间:2010-07-08 07:50:45

标签: iphone objective-c security

我正在开发一些iPhone应用程序,当我的一些应用程序在被黑客入侵的应用程序资源上发布时,我感到非常沮丧。任何人都可以免费安装这些应用程序。

所以我的问题是:如何保护应用程序不会转储到内存中,在调试模式下运行并制作被黑客入侵的ipsw软件包?是否有源代码示例?

5 个答案:

答案 0 :(得分:2)

我已将AntiCrack用于我们的所有产品。不可否认,我仍在使用版本1:当时它是免费的,但我们鼓励他们捐款(而且我也适当地做了)。说实话,它很棒。很容易集成。

当然,这是一场真正的战斗,没有什么是完美的,但AntiCrack当然有助于防止一整套常见的破解方法。当然,很多都在整个网络上都有记录,实施和测试需要花费更长的时间才能花费几美元。

版本2看起来更好,虽然现在有至少30美元的强制捐赠,这仍然是便宜货。

答案 1 :(得分:2)

我发现这个source snippet是isCracked函数的例子

#if HEARTBEAT_CHECK_PIRACY
+ (BOOL)isCracked {
#if TARGET_IPHONE_SIMULATOR
    return NO;
#else
    static BOOL isCracked = NO;
    static BOOL didCheck = NO;
    if(didCheck) return isCracked;

#if HEARTBEAT_PIRACY_THRESHOLD >= 1
    if([[[NSBundle mainBundle] infoDictionary] objectForKey:@"SignerIdentity"] != nil) {
        #if HEARTBEAT_PIRACY_THRESHOLD >= 2
        NSString* infoPath = [[NSBundle mainBundle] pathForResource:@"Info" ofType:@"plist"];
        if([[NSString stringWithContentsOfFile:infoPath encoding:NSUTF8StringEncoding error:NULL] rangeOfString:@"</plist>"].location != NSNotFound) {
            #if HEARTBEAT_PIRACY_THRESHOLD >= 3
            NSDate* infoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:infoPath traverseLink:YES] fileModificationDate];
            NSDate* pkgInfoModifiedDate = [[[NSFileManager defaultManager] fileAttributesAtPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"PkgInfo"] traverseLink:YES] fileModificationDate];
            if([infoModifiedDate timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) {      
            #endif
        #endif
                isCracked = YES;
        #if HEARTBEAT_PIRACY_THRESHOLD >= 2
            #if HEARTBEAT_PIRACY_THRESHOLD >= 3
            }
            #endif
        }
        #endif
    }   
#endif

    didCheck = YES;

    return isCracked;
#endif
}
#endif

答案 2 :(得分:0)

如果您不希望您的应用程序处于可以从内存中转储的位置,那么您所要做的就是不运送它。对不起,但任何DRM只是一种保护静态内容的混淆机制;最终CPU需要知道它应该运行什么代码。始终可以在那时提取代码。

答案 3 :(得分:0)

我理解想要这样做的冲动,但由于它不可能停止,或者几乎没有减速,所以忘掉它并继续前进。让您的应用更好,添加功能,制作其他应用。所有这些都会帮助你赚更多的钱然后你会因为担心盗版而节省。请记住,仅仅因为100人盗版您的软件并不意味着您丢失了100个销售。你可能已经失去了0销售,因为那些人​​只运行你的软件,因为他们可以免费,并且对实际支付没有兴趣。 MPAA&amp; RIAA多年来一直犯这个错误,除非你准备起诉所有的海盗,否则你在这里所做的一切都不会帮助你赚更多钱。

答案 4 :(得分:-1)

简单。您在plist中将pleaseDoNotPirateThisAppPrettyPlease标志设置为1。

我很抱歉,如果我听起来很冒犯,但是noob开发人员要求一种简单的方法来保护他们的应用程序免受盗版行为的攻击,让我感到厌恶。

如果你是一个菜鸟开发者,请专注于你的应用程序而不是先吸吮,然后担心盗版。在发布抛光应用程序时,你的精力会更好,而不是担心少数运行破解版本的人。

FFS,iPhone为您的应用提供付费最佳平台。没有多少人经营Cydia,担心这些只是荒谬。

这不是你正在寻找的答案,我可以感觉到我称你为一个写一些sucky应用程序的菜鸟,无论如何,但这是正确的方法。专注于改善付钱的人的经验,忘记那些永远不会付钱的人。