Ograniczenie piractwa aplikacji iPhone

Jakie są akceptowane metody ograniczania piractwa aplikacji iPhone, które nie naruszają procesu oceny Apple?

Jeśli moja aplikacja "phones home" poda unikalny identyfikator urządzenia, na którym działa, jakie inne informacje muszę zebrać (np. Apple ID użyte do zakupu aplikacji), aby utworzyć ważny token rejestracyjny, który upoważnia do korzystania z aplikacji? Podobnie, jakiego kodu użyłbym, aby uzyskać dostęp do tych dodatkowych danych?

What seem to be the najlepsze obecnie dostępne rozwiązania techniczne tego problemu?

(proszę powstrzymać się od nie-programowych odpowiedzi {[9] } o tym, jak piractwo jest nieuniknione itp. Wiem, że piractwo jest nieuniknione. Interesują mnie odpowiedzi oparte na programowaniu , które omawiają, jak je zmniejszyć. Z góry dziękuję za zrozumienie.)

Author: Alex Reynolds, 2009-05-10

4 answers

UPDATE

Proszę odwiedź i przeczytaj

Dzięki chpwn w komentarzach.

Kod, który jest o wiele za stary! - 11 maja 2009

Na razie jest łatwiejszy sposób, aby wykryć, czy aplikacja iPhone została złamana za piractwo. Nie wymaga to sprawdzania unikalnych identyfikatorów iPhone ' a pod kątem listy akceptowanych identyfikatorów.

Obecnie są trzy rzeczy, które krakersy robią:

  1. Edytuj Info.plik plist
  2. rozszyfruj informacje.plist z binary to UTF-8 lub ASCII
  3. dodaj parę kluczy do Info.plist{SignerIdentity, Podpisywanie aplikacji Apple iPhone OS}

Ostatni najłatwiej sprawdzić za pomocą tego kodu:

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */  }

Ogólnie rzecz biorąc, nie mamy SignerIdentity w żadnej z aplikacji App Store, które budujemy, więc sprawdzanie czy nie ma nic, a następnie wykonywanie instrukcji set powinno utrudnić crackerom i piratom.

Nie mogę wziąć za to uznania, więc proszę odwiedzić Jak udaremnić krakersy iPhone IPA. Jest tam mnóstwo informacji o piractwie na iPhonie i jak go ograniczyć.

 48
Author: David Wong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-08 05:38:28

Jak zauważył Andrey Tarantsov w komentarzach, szukanie ciągu" SignerIdentity " w pliku binarnym (za pomocą aplikacji takiej jak HexEdit) i zastąpienie go jest dość łatwe.

Możesz zakodować ten łańcuch, ale z drugiej strony wszystko co musisz zrobić, to zmienić jeden znak i aplikacja nie będzie już szukać klucza "SignerIdentity", ale dla innego klucza, który prawdopodobnie nie istnieje (dlatego jest null). Ten klucz jest null, aplikacja uważa, że nie jest pęknięty (ponieważ SignerIdentity powinien być null, Jeśli aplikacja nie jest pęknięta).

Zamiast tego, wolałbym sprawdzić rozmiar informacji.plist i porównać go do wartości odniesienia. Zauważyłem, że symulatory i urządzenia nie mają takich samych informacji.Rozmiar pliku plist. To samo dotyczy kompilacji Debug, Release I Distribution. Dlatego upewnij się, że ustawiłeś wartość referencyjną za pomocą informacji.Rozmiar pliku plist dla kompilacji dystrybucji urządzeń.

Jak wyszukać Rozmiar pliku przy uruchomieniu :

 5
Author: samvermette,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:39

Wygląda na to, że zapisanie sumy kontrolnej MD5 Plist i sprawdzanie CryptID powinno wystarczyć do pewnego czasu.

 0
Author: Prashant Rane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-16 08:34:30

Sprawdź iTunesMetadata.plist datę zakupu, ponieważ czasami, gdy aplikacja jest pęknięta, data ta jest zmieniana na coś skandalicznego.

Sprawdź również, czy pole nazwa nabywcy istnieje. Z mojego doświadczenia z crackowaniem aplikacji do użytku osobistego, które zwykle jest usuwane. Jeśli ktoś wie, jak działa ochrona przed zrzutem Temple Run, możesz użyć tego w połączeniu z ochroną, której nie można uzyskać poedcrackmod (Utwórz google poedcrackmod hackulo.us konto, przejdź do dev center poszukaj poedCrackMod, zainstaluj go na iDevice).

Clutch, który nie złamie rzeczy z Temple Run jak ochrona, ma funkcję o nazwie OverDrive mającą na celu wyciszenie wykrywania pęknięć aplikacji. poedCrackMod ma LamestPatch, co nie jest tak dobre. Również poedCrackMod jest skrypt bash open source, które mogą być inżynierii wstecznej. Podsumowując, masz aplikację, która ma ochronę przed kopiowaniem, której nie można obejść za pomocą clutch / overdrive, ale można ją złamać za pomocą poedCrackMod. Jednak poedCrackMod nie może obejść aplikację w kontroli piractwa aplikacji. Trudno jest ręcznie łatać kontrole integrety w pliku wykonywalnym aplikacji. Więc Twoja aplikacja jest trudna do złamania.

 -1
Author: Anders Odhner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-21 09:22:43