2017-04-20 6 views
1

iOS-Anwendung wird bei der Ausführung in einem Gerät an viele Laufzeitbibliotheken angehängt. Wie können wir unsere iOS App vor anderen Debuggern schützen, die beim Bewerbungsprozess angegriffen werden? Wie mit GDB können wir in den Anwendungsprozess hacken und Laufzeit manipulieren. Gibt es eine Möglichkeit, mit der Einstellung oder dem Code aufzuhören? Oder gibt es eine Möglichkeit zu überprüfen, ob andere Laufzeitbibliotheken an den Prozess angeschlossen werden? Können wir die App in solchen Szenarien durchaus nutzen?iOS-App vor Laufzeit-Hooking schützen

+1

Die Antwort ist eine tiefe Nr. Selbst wenn Sie das irgendwie schaffen könnten, genügt es, den relevanten Teil der Binärdatei auf der Festplatte zu entfernen oder auszutauschen, um eventuelle Gegenmaßnahmen zu entfernen. Sie müssen ein gewisses Maß an Vertrauen in das Betriebssystem auf iOS haben, das ist die gesamte Basis des Ökosystems "Walled Garden". Wenn ein böswilliger Benutzer Root-Zugriff auf das Gerät hat, sind alle Wetten deaktiviert - Sie haben keine Kontrolle mehr. –

+0

Vielen Dank für Ihre Antwort @ RichardJ.RossIII. Gibt es eine Möglichkeit, die Binärdatei zumindest davor zu schützen, von einer anderen Partei resigniert zu werden? –

+0

@DebasishChowdhury Ihr Programm ist ein Array von Bytes. Sie können ein Byte-Array nicht davor schützen, geändert zu werden. – Siguza

Antwort

0

Wir können das Änderungsdatum der Datei Info.plist und des Anwendungsnamens überprüfen und es mit dem Änderungsdatum des Pakets vergleichen. Wenn ein Treffer nicht gefunden wurde, können wir daraus schließen, dass die Binärdatei der App geändert wurde.

//Check date of modifications in files (if different - app cracked) 
NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath]; 
NSString* path2 = [NSString stringWithFormat:@"%@/AppName", bundlePath]; 
NSDate* infoModifiedDate = [[manager attributesOfFileSystemForPath:path error:nil] fileModificationDate]; 
NSDate* infoModifiedDate2 = [[manager attributesOfFileSystemForPath:path2 error:nil] fileModificationDate]; 
NSDate* pkgInfoModifiedDate = [[manager attributesOfFileSystemForPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"PkgInfo"] error:nil] fileModificationDate]; 
if([infoModifiedDate timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) { 
    return YES; 
} 
if([infoModifiedDate2 timeIntervalSinceReferenceDate] > [pkgInfoModifiedDate timeIntervalSinceReferenceDate]) { 
    return YES; 
} 
+0

Wenn die App-Binärdatei geändert wurde, ist dieser Code möglicherweise nicht mehr vorhanden. – Siguza

Verwandte Themen