objective-c - ofuscado - ofuscar codigo wordpress
¿Cómo cifrar u ofuscar el código objetivo c? (3)
Posible duplicado:
Ofuscación del código de la aplicación de iPhone / iPad - ¿Es posible? ¿Vale la pena?
He pasado mucho tiempo en esto y no pude encontrar una respuesta perfecta. Por eso decidí poner mi pregunta aquí. Tengo una aplicación para iPhone y quiero cifrar el código para evitar las utilidades class-dump o otool. (Herramientas usadas para volcar los encabezados desde el ejecutable). Me gustaría saber si hay alguna forma de cifrar el código fuente o de ofuscar el código fuente.
Aparentemente, de acuerdo con esta respuesta, Apple encripta los binarios del iPhone como algo normal para todas las aplicaciones de iPhone.
Dejaría de preocuparme por eso.
En realidad, puede proporcionar cierta protección contra la confusión y la manipulación indebida con herramientas especializadas de terceros. Sé que hay 2 compañías que proporcionan herramientas o servicios para hacer esto: Arxan e irDato.
Los desarrolladores pequeños tampoco son baratos o accesibles, pero si está desarrollando para una gran corporación, debe considerarlos.
La ofuscación se realiza mediante la mezcla de rutas de código y la adición de instrucciones redundantes para confundir a cualquiera que intente realizar una ingeniería inversa del código. La protección contra la manipulación se realiza agregando sumas de comprobación al código e incorporando las sumas de verificación dentro de las funciones. Puede crear una red de sumas de comprobación interdependientes que hace que sea extremadamente difícil evitarlas. Hay algunas otras cosas que se pueden hacer, pero realmente necesita hablar con especialistas en esta área.
Además de la respuesta anterior, Apple no cifra los archivos binarios, sino que los firma. Es bastante fácil realizar ingeniería inversa y modificar los binarios de la aplicación en un dispositivo con jailbreak.
Es mucho más complicado de lo que parece inicialmente. Cualquier herramienta que mande nombres de métodos tiene el potencial de alterarse:
- Cumplimiento de KVC
- El uso de selectores generados dinámicamente.
- Compatibilidad con archivos Nib
- Conformidad del protocolo
- Método de herencia
La ofuscación es solo otra capa con la que lidiar; a menudo la ofuscación se invierte fácilmente. Realmente no es posible "cifrar" sus clases porque el tiempo de ejecución de Objective-C y el marco Cocoa no sabrán cómo descifrarlo. Cualquiera que esté lo suficientemente determinado eventualmente descubrirá cómo funciona su programa.