2010-02-25 22 views
43

Acabo de terminar una biblioteca en Objective-C que compilé como una biblioteca estática para su distribución.Descompilación de las bibliotecas de Objective-C

Quería saber qué posibilidades de obtener este decompilado están por ahí.

  • ¿Conoces algún software que pueda hacer esto?
  • Si es así, ¿cómo podría protegerme mejor?

EDIT: Mi lib estática está hecho para iPhone/ARM

he creado un algoritmo que, dependiendo de los algunos parámetros de la aplicación, puede funcionar como demostración o como código completo. Inicia el objeto con variables X y desbloquea la versión completa. Me preguntaba si podrán ver este algoritmo para que puedan crear un generador de claves.

+0

Para su información, tener usuarios ingrese un código para usar la versión completa suena dudoso para una aplicación de iPhone.Si están comprando el juego completo en App Store, no es necesario ingresar un código. Si lo están comprando fuera de la App Store, Apple no estará contento. – Chuck

+3

Gracias, no me refiero a los usuarios finales sino a los desarrolladores. [[myLib alloc] initWithMySecretKey: @XXX]] –

+0

Su algoritmo se ejecutará para verificar la clave; pueden ver las instrucciones (como la máquina, necesita saber las instrucciones para ejecutarlo), luego pueden verlo y desarrollar un generador. – JHG

Respuesta

58

No está claro lo que está tratando de protegerse de. Sí, puede ser de ingeniería inversa. La herramienta más simple es otool, parte de la distribución estándar del revelador:

otool -tV <library> 

Desde que corren hasta cosas como IDA Pro, que tiene soporte para el iPhone y es muy agradable para este tipo de trabajo. Mientras tanto, estoy realmente sorprendido de que aún no haya visto una revisión de otx para iPhone/ARM. No me sorprendería ver una presentación eventualmente. Y, por supuesto, hay gdb si estás tratando de averiguar cómo fluyen las cosas y qué datos hay en varios puntos.

Si tiene más detalles acerca de lo que está tratando de protegerse, puede haber algunas respuestas específicas. Más allá de eso, lee los comentarios de Chuck.

+1

Gracias Rob, esto ha sido muy esclarecedor. He agregado más información de lo que trato de proteger. –

+2

Veo la edición. A su pregunta, sí, con un depurador podrán crear un generador de claves. Pero no se molestarán. Simplemente modificarán el binario para omitir la verificación de la clave. No te preocupes demasiado. Si su biblioteca es tan popular que la gente se toma la molestia de crear claves falsas, entonces es lo suficientemente popular como para ganar mucho dinero de todos modos. Preocúpate cuando estés acumulando toda esa masa. Si pierdes tu tiempo en ofuscación (lo que no será de mucha ayuda), nunca tendrás suficiente tiempo para hacer el increíble producto que cualquiera comprará de todos modos. –

+1

En cualquier caso, recomendaría construir versiones separadas en lugar de usar una clave. Cuando las personas lo paguen, envíeles la versión completa. Menos cosas para salir mal de esa manera, menos inflamación de código, mucho más difícil de romper por personas al azar (porque no tendrán el código completo). –

5

ChanceGetsDecompiled = ExpectedGainFromBeingDecompiled/PopularityOfLibrary

Bueno, si usted realmente quiere saber Me gustaría probar descompilación usted mismo. No dice si esto es para PPC, Intel o ARM, lo que hace la diferencia. Aquí hay un decompilador para Intel i386 Decompiler

No sé lo que podría hacer (no creo que haya mucho) para limitar esto. El código siempre puede ser de ingeniería inversa. Sé feliz de que no estés usando java o .net. Su descompilación es muy agradable.

+0

Hola Jamone, gracias por tu publicación. En realidad, la lib que construí es para iPhone SDK. –

+0

El enlace proporcionado está roto –

+0

Enlace actualizado: http://www.ohloh.net/p/i386codedump –

80

Si se ejecuta, se puede decompilar. Objective-C es particularmente fácil de descompilar en código legible gracias a sus características dinámicas. Si quieres hacer las cosas un poco más difíciles, puedes escribir la mayor parte de tu código en C simple y quitar el ejecutable, lo que por supuesto tiene la desventaja de dificultar la administración del diseño de tu aplicación. Pero sé honesto contigo mismo: si alguien quiere descifrar tu código, no podrás detenerlo. Las galletas tienen una cantidad prácticamente ilimitada de tiempo y entusiasmo y en realidad se emocionarán con cualquier esfuerzo nuevo que pongas para detenerlas. Nadie ha creado un software inalcanzable, y las mayores corporaciones del mundo lo han intentado. No lo harás mejor que ellos, especialmente si necesitas preguntar sobre esto en Stack Overflow.

Tómese el tiempo que hubiera dedicado a frustrar la descompilación y úsela para mejorar su producto, que tendrá un ROI mucho mejor.

+72

'No lo va a hacer mejor que ellos, especialmente si necesita preguntar sobre esto en Stack Overflow. - Lol ... – Rodrigo

+4

"y en realidad te excitarán los nuevos esfuerzos que pongas para detenerlos" Lol ... Bien puesto. – theKRAY

+0

¿Puede decirme cualquier herramienta o forma que sea útil para descompilar la biblioteca de ios? Extraigo un archivo de objeto pero eso no es útil porque es binario. Quiero el código fuente de la biblioteca estática. ar -xv MyLib.a MyObj.o este comando da solo archivo binario. ¿Cómo puedo extraer el archivo de clase de eso? –

Cuestiones relacionadas