Jak określić (programowo), czy iPhone / iPod jest:
- Więzienie złamane
- Uruchamianie pękniętej kopii oprogramowania
Pinch Media może wykryć, czy telefon jest zepsuty w więzieniu lub uruchomione oprogramowanie jest złamane, czy ktoś wie, jak to robi? Czy są jakieś biblioteki?
iphone
objective-c
ios
cocoa-touch
jailbreak
Richard Stelling
źródło
źródło
Odpowiedzi:
Oto jeden ze sposobów wykrycia, czy Twoja aplikacja została złamana.
Krótko mówiąc: pękanie zwykle wymaga zmiany Info.plist. Ponieważ jest to zwykły plik, do którego masz dostęp, dość łatwo jest określić takie zmiany.
źródło
Wykrywanie telefonu po jailbreaku jest tak proste, jak sprawdzenie obecności
/private/var/lib/apt/
folderu. Chociaż nie wykrywa to użytkowników korzystających tylko z instalatora, do tej pory większość z nich zainstalowała Cydię, Icy lub RockYourPhone (wszyscy używają apt)Aby wykryć pirackich użytkowników, najłatwiej jest sprawdzić obecność
SignerIdentity
klucza w aplikacjiInfo.plist
. Ponieważ zaawansowani crackerzy mogą łatwo znaleźć standardowe[[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"]
testy, najlepiej jest ukryć te wywołania za pomocą środowiska wykonawczego Objective C dostępnego za pośrednictwem#import <objc/runtime.h>
alternatywnych odpowiedników.źródło
Aby rozwinąć odpowiedź zakovyrya, możesz użyć następującego kodu:
if ([[[NSBundle mainBundle] infoDictionary] objectForKey: @"SignerIdentity"] != nil) { // Jailbroken }
JEDNAK osoba dokonująca jailbreaku Twojej aplikacji może dokonać edycji szesnastkowej Twojego programu i jako taka może edytować ciąg @ "SignerIdentity", aby odczytać @ "siNGeridentity" lub coś innego, co zwróciłoby nil i przeszedł.
Jeśli więc skorzystasz z tego (lub dowolnej innej sugestii z http://thwart-ipa-cracks.blogspot.com/2008/11/detection.html ):
źródło
Aby rozwinąć powyższe komentarze Yonela i Benjiego:
1) Metoda Landona Fullera polegająca na sprawdzaniu szyfrowania, powiązana powyżej przez yonela, wydaje się być jedyną, która wciąż nie została pokonana przez automatyczne narzędzia do łamania zabezpieczeń. Nie martwiłbym się zbytnio, że Apple w najbliższym czasie zmieni stan nagłówka LC_ENCRYPTION_INFO. Wydaje się, że ma nieprzewidywalne skutki na iPhone'ach z jailbreakiem (nawet jeśli użytkownik kupił kopię ...)
W każdym razie nie podjąłbym żadnych pochopnych działań przeciwko użytkownikowi na podstawie tego kodu ...
2) Uzupełnienie komentarza Benjiego dot. zaciemnianie (absolutna konieczność, gdy mamy do czynienia z wartościami ciągów znaków w kodzie antypirackim): podobnym, ale być może nawet łatwiejszym sposobem jest zawsze sprawdzanie zasolonej, zaszyfrowanej wersji wartości, której szukasz. Na przykład (nawet jeśli to sprawdzenie nie jest już wydajne), sprawdziłbyś nazwę każdego klucza MainBundle jako md5 (keyName + "some secret salt") pod kątem odpowiedniej stałej ... Raczej proste, ale z pewnością pokonasz każdą próbę zlokalizowania strunowy.
Oczywiście wymaga to możliwości pośredniego zapytania o wartość, którą chcesz porównać (na przykład przechodząc przez tablicę, która ją zawiera). Ale tak jest najczęściej.
źródło