La décompilation Objective-C bibliothèques
Je viens de terminer une bibliothèque en Objective-C que j'ai compilé comme une Bibliothèque Statique pour la distribution.
Je voulais savoir ce que les chances d'obtenir ce décompilé sont là.
- Connaissez-vous des logiciels qui peuvent le faire?
- Si oui, comment pourrais-je me protéger mieux?
EDIT: Ma lib statique est conçu pour l'iPhone /BRAS
J'ai créé un algorithme en fonction de certains paramètres de l'application, il peut également fonctionner en démo ou en tant que code complet. Vous init de l'objet avec les variables X et débloquer la version complète. Je me demandais si ils vont être en mesure de voir cet algorithme afin qu'ils puissent créer un générateur de clés.
- Pour info, ayant aux utilisateurs de saisir un code pour utiliser la version complète de sons douteux pour une application iPhone. Si ils achètent le jeu complet à partir de l'App Store, il n'y a pas besoin d'entrer un code. Si ils achètent en dehors de l'App Store, Apple ne sera pas heureux.
- Merci, je ne veux pas dire aux utilisateurs finaux, mais les développeurs. [[myLib alloc] initWithMySecretKey: @XXX]]
- Votre algorithme s'exécute pour vérifier la clé; ils peuvent voir les instructions (comme la machine, il faut connaître les instructions pour l'exécuter), puis ils peuvent le voir et de développer un générateur.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas clair ce que vous essayez de vous protéger de. Oui, il peut être à l'ingénierie inverse. L'outil le plus simple est
otool
, une partie de la norme développeur de distribution:Depuis qu'ils sont jusqu'à des choses comme IDA Pro, qui est support de l'iPhone et est très agréable pour ce genre de travail. Entre les deux, je suis vraiment surpris que je n'ai pas vu une refonte de otx pour iPhone/BRAS encore. Je ne serais pas surpris de voir un show up. Et bien sûr, il y a gdb si vous êtes à essayer de travailler sur la façon dont les choses débit et de ce que les données à différents points.
Si vous avez plus de détails à propos de ce que vous essayez de vous protéger contre, il peut y avoir quelques réponses ciblées. Au-delà, lire Chuck commentaires.
otool
. C'est correct,otool
ne pas déclarer les types (vous pouvez en déduire le nombre de paramètres à partir du nom de la méthode). Si vous avez une question particulière, vous devriez commencer une nouvelle question.Si elle s'exécute, il peut être décompilé. Objective-C est particulièrement facile à décompiler dans un code lisible grâce à ses caractéristiques dynamiques. Si vous voulez rendre les choses un peu plus difficile, vous pourriez écrire la plupart de votre code dans la plaine du C et de la tranche de l'exécutable qui, évidemment, a l'inconvénient de rendre la conception de votre application plus difficile à gérer. Mais soyez honnête avec vous-même: Si quelqu'un veut casser votre code, vous n'allez pas être en mesure de les arrêter. Les biscuits ont pratiquement illimité quantités de temps et d'enthousiasme et d'être réellement excité par tout nouveaux efforts que vous mettez dans de les arrêter. Personne n'a encore fait inviolable logiciel, et de plus grandes sociétés dans le monde ont essayé. Vous n'allez pas faire mieux qu'eux, surtout si vous avez besoin de se renseigner sur un Débordement de Pile.
Prendre le temps que vous avez mis en contrecarrant la décompilation et à l'utiliser pour faire de votre produit mieux — qui auront un retour sur investissement beaucoup mieux.
You're not going to do better than them, especially if you need to ask about it on Stack Overflow.
- Lol...ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled /PopularityOfLibrary
Eh bien, si vous voulez VRAIMENT savoir, je voudrais essayer de décompiler votre auto. Vous ne dites pas si c'est pour PPC, Intel, ou le BRAS qui fait une différence. Voici un decompiler pour Intel
i386 Decompiler
Je ne sais pas ce que vous pourriez faire (je ne pense pas qu'il y est beaucoup) pour limiter cet effet. Code pouvez toujours être à l'ingénierie inverse. Être heureux que vous n'êtes pas à l'aide de java ou .net. Leur décompilation est tellement agréable.