web-dev-qa-db-fra.com

Décompilation des bibliothèques Objective-C

Je viens de terminer une bibliothèque en Objective-C que j'ai compilée en tant que bibliothèque statique pour la distribution.

Je voulais savoir quelles sont les chances d'obtenir ce décompilé.

  • Connaissez-vous un logiciel capable de le faire?
  • Si oui, comment pourrais-je mieux me protéger?

EDIT: Ma bibliothèque statique est conçue pour iPhone/ARM

J'ai créé un algorithme qui, en fonction de certains paramètres de l'application, peut s'exécuter en démo ou en code complet. Vous initiez l'objet avec des variables X et déverrouillez la version complète. Je me demandais s'ils pourraient voir cet algorithme afin de pouvoir créer un générateur de clés.

44
Cy.

Il n'est pas clair de quoi vous essayez de vous protéger contre . Oui, il peut être rétroconçu. L'outil le plus simple est otool, qui fait partie de la distribution développeur standard:

otool -tV <library>

De là, ils se heurtent à des choses comme IDA Pro , qui prend en charge l'iPhone et est très agréable pour ce genre de travail. Entre les deux, je suis vraiment surpris de ne pas avoir encore vu de retouche de otx pour iPhone/ARM. Je ne serais pas surpris d'en voir un finalement. Et bien sûr, il y a gdb si vous essayez de comprendre comment les choses se déroulent et quelles sont les données à différents points.

Si vous avez plus de détails sur ce contre quoi vous essayez de vous protéger, il peut y avoir des réponses ciblées. Au-delà de cela, lisez les commentaires de Chuck.

60
Rob Napier

S'il s'exécute, il peut être décompilé. Objective-C est particulièrement facile à décompiler en code lisible grâce à ses fonctionnalités dynamiques. Si vous voulez rendre les choses un peu plus difficiles, vous pouvez écrire la plupart de votre code en C simple et supprimer l'exécutable - ce qui a bien sûr le compromis 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 ne pourrez pas les arrêter. Les crackers ont un temps et un enthousiasme pratiquement illimités et seront en fait excités par tous les nouveaux efforts que vous déployez pour les arrêter. Personne n'a encore créé de logiciel non craquable, et les plus grandes entreprises du monde ont essayé. Vous n'allez pas faire mieux qu'eux, surtout si vous avez besoin de poser des questions à ce sujet sur Stack Overflow.

Prenez le temps que vous auriez mis à contrecarrer la décompilation et utilisez-le pour améliorer votre produit - cela aura un meilleur retour sur investissement.

83
Chuck

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled/PopularitéOfLibrary

Eh bien, si vous voulez vraiment savoir, j'essaierais de le décompiler vous-même. Vous ne dites pas si c'est pour PPC, Intel ou ARM ce qui fait la différence. Voici un décompilateur pour Intel i386 Decompiler

Je ne sais pas ce que vous pourriez faire (je ne pense pas qu'il y en ait beaucoup) pour limiter cela. Le code peut toujours être rétroconçu. Soyez heureux que vous n'utilisiez pas Java ou .net. Leur décompilation est tellement agréable.

5
jamone