Я разрабатываю некоторое приложение для iPhone, и я очень расстроен, когда некоторые мои приложения опубликовали на взломанных ресурсах приложений. И любой может установить те приложения бесплатно.
Таким образом, мой вопрос: Как защитить приложение от дампа в память, выполнение в режиме отладки и создание взломали пакет ipsw? Есть ли исходные примеры для этого?
я нашел этот исходный фрагмент как пример функции 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
Я использовал AntiCrack для всех наших продуктов. По общему признанию, я все еще использую версию 1: в то время она была бесплатной, но мне предлагали сделать пожертвование (и я сделал это должным образом). И если честно, это здорово. Очень легко интегрировать.
Конечно, это настоящая битва, и нет ничего идеального, но AntiCrack определенно помог предотвратить целый набор распространенных подходов к взлому. Конечно, многие из них задокументированы по всему Интернету, мне потребовалось бы гораздо больше времени для внедрения и тестирования, чем просто выложить несколько долларов.
Версия 2 выглядит даже лучше, хотя теперь обязательное пожертвование составляет не менее 30 долларов, что по-прежнему выгодно.
Простой. Вы устанавливаете флаг pleaseDoNotPirateThisAppPrettyPlease
в 1 в своем списке.
Прошу прощения, если я звучу оскорбительно, но разработчики-новички, которые просят простой способ защиты своих приложений от пиратских потоков, насмехаются над чем-то хроническим.
Если вы новичок, сначала сконцентрируйтесь на своем приложении, а не на плохом, а потом побеспокойтесь о пиратстве. Ваша энергия будет гораздо лучше потрачена на выпуск отлаженного приложения, чем на беспокойство о горстке людей, которые запускают взломанные версии.
FFS, iPhone - это лучшая платформа для оплаты ваших приложений. Не многие люди используют Cydia, беспокоиться об этом просто смешно.
Это не тот ответ, который вы ищете, и, как вы понимаете, я назвал вас новичком, который пишет отстойные приложения, что угодно, но это правильный путь. Сконцентрируйтесь на улучшении опыта людей, которые платят, и забудьте о тех, кто никогда не будет платить.
Я понимаю желание сделать это, но, поскольку его невозможно остановить или почти не замедлить, забудьте об этом и двигайтесь дальше. Сделайте свое приложение лучше, добавляйте функции, создавайте дополнительные приложения. Все это поможет вам заработать больше долларов, чем вы сэкономите, беспокоясь о пиратстве. Помните, что только то, что 100 человек пиратят ваше программное обеспечение, не означает, что вы потеряли 100 продаж. Возможно, вы потеряли 0 продаж, поскольку эти люди запускали ваше программное обеспечение только потому, что могли бесплатно, и не имели бы интереса платить. MPAA и RIAA делают эту ошибку годами, и, если вы не готовы подать в суд на всех пиратов, ничто из того, что вы сделаете здесь, не поможет вам заработать больше долларов.
Если вы не хотите, чтобы ваше приложение было в положении, когда его можно выкинуть из памяти, все, что вам нужно сделать, это не поставлять его. Извините, но любой DRM - это всего лишь механизм обфускации для защиты содержимого в состоянии покоя; в конечном итоге процессору нужно знать, какой код он должен выполнять. Код всегда можно извлечь в этот момент.