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).
können Sie mehr über die Verwendung des Strings-Programms erklären, um zu sehen, was sich in der kompilierten Binärdatei befindet. –