J'ai fait un projet Xcode où j'ai fait des trucs de sécurité et ils m'ont demandé d'obscurcir les noms de méthodes
comme p> J'ai fait une bibliothèque de caractères .framework de. Le projet (projet A) et l'inclus dans un autre projet (projet B). P> mais quand je cours (projet B) avec une configuration de version de déverrouillage, il se bloque toujours comme. P> *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[SecurityClass a9328238]: unrecognized selector sent to class 0x337cc4'
4 Réponses :
Où avez-vous placé le Pour que l'obfuscation soit efficace, elle doit être placée dans un fichier à la fois inclus par la mise en œuvre et l'appelant. P>
Vous pouvez également vérifier que le prétraitement est correct en inspectant le fichier pré-traité. Sélectionnez le fichier de mise en œuvre et accédez au menu #define code> pour obfuscation? Est-ce dans le fichier d'en-tête (
.h code>) ou dans le fichier de mise en œuvre (
.m code>) du cadre? P>
Produit> Générer une sortie> Générer un fichier prétraité CODE> (vous pouvez sélectionner la configuration en bas de l'écran). P>
L'affichage du résultat pré-traité est également possible via l'éditeur d'assistant.
Il semble que l'exécutable qui importe le cadre obscurcier essaie d'accéder aux méthodes non obscurcées. P>
Vous devriez vérifier les symboles dans le cadre. Utilisez nm code> sur la bibliothèque statique dans le cadre pour voir les symboles exportés (marqués d'un "T"). Assurez-vous que les symboles sont obscurcissés. P>
My Hunch est le Mais vous voudrez peut-être considérer cela sous un autre angle. Vous pouvez modifier: p> à: p> déposer en utilisation: P> #define code> Emplacement / Visibilité également.
#define code> totalement. P>
SecurityClass_LogIn();
â¦
Si vous avez tout emballé dans un cadre, avez-vous été assuré que les en-têtes appropriés sont exposés en dehors du cadre? Les en-têtes à l'intérieur d'un cadre ne sont pas exposés de la même manière que les fichiers normaux. Accédez à vos phases de projet
Qu'y a-t-il dans vos drapeaux de compilateur?
Est-ce que cela fonctionne dans la construction de libération sans noms de méthodes obscurcissés?
Qu'est-ce qu'ils disent de la sécurité par l'obscurité?
Cela fonctionne sans obfuscation.
Peut-être devriez-vous en dire plus sur la façon dont l'Obfuscation est utilisé - la façon dont vous montrez dans votre exemple, avec un
#define code> immédiatement avant la définition de la méthode (dans un fichier .m) ne fera pas que Nom visible aux appelants (bien que ce n'est pas évidemment la cause de l'erreur que vous voyez, alors je soupçonne que vous condensez votre code)
Je ressens la même chose que @jeremyp. Tout cela n'a rien à voir avec la sécurité. Cela rendra un piratage légèrement plus difficile, mais il n'aura plus d'augmentation de la sécurité.