2017-01-25 2 views
0

Ich habe eine Config.h-Datei, die verschiedene Präprozessor-Bedingungen basierend auf der Umgebung enthält. Das Projekt hat 2 Ziele. Über die Präprozessorargumente kann BASE_URL = @ "https://firsttarget.com/" sein, wenn die Umgebung das erste Ziel ist, wohingegen BASE_URL = @ "https://secondtarget.com/" sein kann, wenn die Umgebung das zweite Ziel ist.Wird Code innerhalb eines Präprozessors konditional eingeben?

Für rechtliche Zwecke, wenn jemand die Versammlung neu zu kompilieren waren, und gehen Sie zu Strings jagen usw. ... wir nicht jemanden zu finden, die Zeichenfolge haben @ „https://firsttarget.com/“, wenn sie in die Binärdatei für die zweite Ziel App suchen.

Also meine Frage ist ... sind Zeichenketten hinter Preprozessor Bedingungen während des Archivs entfernt, wenn sie nicht relevant sind?

Antwort

1

Sections in Code zwischen #ifdef und #endif (oder #else) werden nicht durch den Compiler, wenn das Symbol auf der ifdef Linie definiert ist gegeben gesehen. Sie können dies leicht anzeigen, indem Sie etwas schreiben, das in einem solchen Abschnitt nicht kompiliert wird. Und da der Compiler diesen Code nicht sieht, kann der Wert dieser Definition nicht in der Binärdatei enden.

Um genau zu sehen, mit was der Compiler arbeitet, können Sie eine Implementierungsdatei in Xcode auswählen und "Produkt> Aktion ausführen> Vorverarbeitung" aus dem Menü wählen. Dies zeigt Ihnen genau, womit der Compiler arbeiten wird. Natürlich wird es auch den Inhalt aller System-.h-Dateien geben, die importiert werden, also ist Ihr Code höchstwahrscheinlich am Ende. Ihre #define Zeilen werden ebenfalls entfernt. Um wirklich zu überprüfen, welche Zeichenfolgen verwendet werden, müssen Sie eine Datei auswählen, die diese Makros tatsächlich verwendet.

Und schließlich können Sie das gleiche tun, was ein Angreifer tun könnte - verwenden Sie das strings Dienstprogramm für die kompilierte Binärdatei und sehen Sie, was da drin ist. Erstellen Sie in Xcode Ihre App und wählen Sie die Option "Im Finder anzeigen" für Ihr App-Paket aus der Produktgruppe. Dort wählen Sie "Paketinhalt anzeigen", um das App-Paket zu öffnen. Die tatsächliche Binärdatei ist dort mit dem gleichen Namen wie Ihr Bundle, aber keine Dateierweiterung. Öffnen Sie dann ein Terminalfenster, geben Sie "strings" ein (dh die Wörter strings gefolgt von einem Leerzeichen) und ziehen Sie die Binärdatei darüber. Dann bestätigen Sie mit der Rückkehr. Sie erhalten eine lange Liste aller lesbaren Strings aus der Binärdatei (einschließlich aller Selektoren).

+0

können Sie mehr über die Verwendung des Strings-Programms erklären, um zu sehen, was sich in der kompilierten Binärdatei befindet. –

Verwandte Themen