Ändert Apple die ausführbaren Dateien von iOS-Anwendungen für Apps, die an den App Store gesendet werden?

7

Ist die ausführbare Datei einer App Byte für Byte identisch, wenn die App über den App Store gekauft und auf dem iPhone eines Nutzers installiert wird, im Vergleich zur ursprünglichen ausführbaren Datei, die im ursprünglichen App-Paket an Apple gesendet wurde? Oder ist es anders (zum Beispiel mit zusätzlichen Signaturen oder Verschlüsselung)?

Mir geht es nur um die ausführbare Datei, nicht um das gesamte App-Paket.

Insbesondere würde Code wie ...

%Vor%

... den gleichen Hash berechnen wie den Hash außerhalb des iPhone auf der ursprünglichen, übermittelten Datei berechnen?

Wenn Sie beispielsweise einen SHA256-Hash wie oben berechnen und dann "Build and Run" in XCode verwenden, um auf einem angeschlossenen iPhone zu laufen, erhalten Sie genau das gleiche Ergebnis wie beim Berechnen des SHA256-Hashs, indem Sie openssl sha256 MyAppExecutableFile von einem Terminal in OS X ausführen bedeutet, dass die Installation der App über XCode die ausführbare Datei nicht verändert.

Meine Frage ist, ob dies noch gilt, wenn eine App im App Store eingereicht, gekauft und installiert wird.

    
JohnSpeeks 25.04.2011, 22:51
quelle

2 Antworten

17

Die ausführbare Datei der Anwendung wird von Apple verschlüsselt, wenn sie im App Store veröffentlicht wird. Es ist also keine gute Idee, eine Prüfsumme auf Ihrer eigenen Binärdatei auszuführen - Sie können die Dateigröße der verschlüsselten Binärdatei nicht im Voraus kennen >

Beachten Sie, dass die Binärdatei immer im Dateisystem verschlüsselt bleibt und nur der iPhone-Rootbenutzer diese Binärdateien entschlüsseln kann. Wenn Sie eine App aus dem App Store mit iTunes herunterladen, können Sie die IPA auf Ihrem PC oder Mac öffnen und sehen, dass die Binärdateien tatsächlich durch Ausführen von otool verschlüsselt sind:

%Vor%     
Julio Gorgé 25.04.2011, 23:20
quelle
2

Die Anwendung wird auch von Ihrer Unterschrift befreit und von Apple signiert. Dies kann überprüft werden, indem Sie "codesign -vvvvd" in der von Ihnen übermittelten App-Binärdatei ausführen und mit der Ausgabe von "codesign -vvvvd" der App-Binärdatei vergleichen, die Sie aus dem Store herunterladen.

Aus diesem Grund stimmen die Hashes nicht überein.

    
user700048 02.09.2011 14:48
quelle

Tags und Links