2009-05-10 7 views
62

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

Jeśli moja aplikacja "zadzwoni do domu", aby podać unikatowy identyfikator urządzenia, na którym działa, jakie inne informacje będę musiał pobrać (np. Identyfikator Apple używany do zakupu aplikacji), aby utworzyć ważny token rejestracji, który autoryzuje korzystanie z aplikacji? Podobnie, jakiego kodu użyłbym, aby uzyskać dostęp do tych dodatkowych danych?

Co wydaje się być najlepszym dostępnym technicznym podejściem do tego problemu, w chwili obecnej?

(proszę powstrzymać się od braku odpowiedzi o programowaniu jak piractwo jest nieunikniona, itd. Wiem, że piractwo jest nieuniknione. Jestem zainteresowany programistycznych opartych odpowiedzi że dyskutować, jak je zmniejszyć. Dzięki z góry za zrozumienie.)

+36

Uwielbiam pytania, które określają z wyprzedzeniem, jaką odpowiedź chcą usłyszeć. W ten sposób otrzymujesz najlepsze odpowiedzi. ;) – jalf

+2

Po prostu próbuję odciąć filozoficzne wykolejenie na starcie. Odpowiedzi techniczne są oczywiście lepsze. –

+0

@Alex łatwiej jest uniknąć odpowiedzi "nie możesz tego zrobić", jeśli nie używasz terminologii takiej jak "porażka" zamiast "łagodzić" –

Odpowiedz

48

UPDATE

Proszę visit and read

Dzięki chpwn w komentarzach.

Kod jest zbyt stary! - 11 maja 2009 r.

Na razie jest łatwiejszy sposób na sprawdzenie, czy Twoja aplikacja na iPhone'a została uszkodzona w celu piractwa. Nie wymaga to sprawdzania unikalnych identyfikatorów telefonu iPhone na liście akceptowanych identyfikatorów.

Obecnie istnieją trzy rzeczy krakersy zrobić:

  1. edytować Info.plist plik
  2. zdekodować Info.plist od binarnego UTF-8 lub ASCII
  3. dodać klucz-pair do Info.plist {SignerIdentity, Apple iPhone OS Podpisanie Zastosowanie}

ostatni najłatwiej jest sprawdzić z tym kodem:

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

Generalnie nie posiadamy SignerIdentity w żadnej z aplikacji App Store, które budujemy, więc sprawdzamy, czy nie wystąpiły, a wykonanie instrukcji ustawiania powinno utrudnić crackerom i piratom.

Nie mogę wziąć kredytu za to, więc odwiedź stronę How to Thwart iPhone IPA Crackers.. Istnieje mnóstwo informacji na temat piractwa na iPhonie i sposobów jego ograniczenia.

+0

Dziękuję za odpowiedź na pytanie, które zadałem. –

+3

@ David Szybkie pytanie, na które nikt nie może odpowiedzieć: skoro jest to łatwa (potencjalnie 5-liniowa) poprawka, dlaczego nie została zaimplementowana częściej? Czy jest jakiś minus, którego jesteś świadomy? Większość aplikacji VAST w sklepie z aplikacjami została złamana i można je pobrać. – mmc

+7

Kraker jest bardzo łatwy w sprawdzaniu literalnego ciągu znaków SignerIdentity lub wywołania selektora infoDictionary. Prawdopodobnie będziesz chciał je zasłonić. Zadanie "zrób coś" jest również trudne: nie możesz od razu odejść, bo to by zaniepokoiło krakera.Musisz więc zawieść z dużym opóźnieniem (może dać im 30-dniową próbę, a następnie poprosić o zakup legalnej kopii). Zobacz, dzięki temu przydatność nie jest już tak prosta. –

5

Jak zauważył Andrey Tarantsov w komentarzach, szukanie łańcucha znaków "SignerIdentity" w pliku binarnym (przy użyciu aplikacji podobnej do HexEdit) i zastąpienie go jest dość łatwe.

Można zakodować ten ciąg, ale potem wszystko co musisz zrobić, to zmienić jeden znak, a aplikacja nie będzie szukała klucza "SignerIdentity", ale dla jakiegoś innego klucza, który prawdopodobnie nie istnieje (dlatego jest zerowy). Ten klucz jest zerowy, aplikacja myśli, że nie jest pęknięta (ponieważ SignerIdentity powinno być puste, jeśli aplikacja nie jest pęknięta).

Zamiast tego wolałbym sprawdzić rozmiar pliku info.plist i porównać go z wartością odniesienia.Zauważyłem, że wersje Symulatora i Urządzenia nie mają tego samego rozmiaru pliku info.plist. To samo dotyczy kompilacji Debug, Release i Distribution. Dlatego upewnij się, że ustawiłeś wartość odniesienia przy użyciu rozmiaru pliku info.plist dla Kompilacji dystrybucji urządzeń.

Jak szukać filesize at launch:

-1

Sprawdź iTunesMetadata.plist na dzień PURCHACE jak czasami, gdy aplikacja jest pęknięta, że ​​data zostanie zmieniona na coś skandalicznego.

Sprawdź również, czy istnieje pole nazwy nabywcy. Z mojego doświadczenia w łamaniu aplikacji na własny użytek zazwyczaj znika. Jeśli ktoś wie, jak działa Anti Dump Protection Temple Run, możesz go użyć w połączeniu z ochroną, której poedCrackMod nie może uzyskać (goedCrackMod stworzył konto hackulo.us, przejdź do dev centrum wyszukiwania poedCrackMod, zainstaluj go na iDevice) .

Sprzęgło, które nie uszkodzi obiektów Temple Run, jak ochrona, ma funkcję o nazwie OverDrive przeznaczoną do wyciszania wykrywania aplikacji. poedCrackMod ma LamestPatch, który nie jest tak dobry. Również poedCrackMod to skrypt bash typu open source, który może być poddawany inżynierii wstecznej. Podsumowując, masz aplikację z zabezpieczeniem przed kopiowaniem, której nie można obejść za pomocą sprzęgła/nadbiegu, ale można ją złamać za pomocą poedCrackMod. Jednak poedCrackMod nie może ominąć kontroli aplikacji pod kątem piractwa. Trudno jest ręcznie załatać kontrole integralności w pliku wykonywalnym aplikacji. Twoja aplikacja jest trudna do złamania.

0

Wygląda na to, że zapisuję sumę kontrolną MD5 w Plist i sprawdzam, czy CryptID powinien dobrze działać do pewnego czasu.