Um auf die obigen Kommentare von yonel und Benjie einzugehen:
1) Die Methode von Landon Fuller die sich auf die Verschlüsselungsprüfung verlassen, die oben von yonel verlinkt wurde, scheinen die einzigen zu sein, die noch nicht von automatisierten Cracking-Tools besiegt wurden. Ich würde mir keine allzu großen Sorgen darüber machen, dass Apple den Status des LC_ENCRYPTION_INFO-Headers in nächster Zeit ändert. Er scheint einige unvorhersehbare Auswirkungen auf jailbroken iPhones zu haben (selbst wenn der Benutzer eine Kopie gekauft hat...)
Ich würde auf jeden Fall keine voreiligen Maßnahmen gegen einen Benutzer aufgrund dieses Codes ergreifen...
2) Um Benjies Kommentar zur Verschleierung zu ergänzen (eine absolute Notwendigkeit, wenn Sie mit String-Werten in Ihrem Anti-Piraterie-Code arbeiten): eine ähnliche, aber vielleicht noch einfachere Möglichkeit ist, immer eine gesalzen hashed Version des Wertes, den Sie suchen. Zum Beispiel (auch wenn diese Prüfung nicht mehr effizient ist), würden Sie jeden MainBundle-Schlüsselnamen als md5(keyName + "some secret salt") gegen die entsprechende Konstante prüfen... Ziemlich einfach, aber sicher, um jeden Versuch zu vereiteln, die Zeichenkette zu finden.
Dies setzt natürlich voraus, dass Sie in der Lage sind, den Wert, den Sie vergleichen wollen, indirekt abzufragen (z. B. indem Sie durch ein Array gehen, das ihn enthält). Aber das ist meistens der Fall.