2011-10-24 9 views
5

He estado jugando con/depurando/desensamblando binarios en el iPhone.Descriptivo del iPhone ejecutable (MACH-O)

El primer obstáculo es que los binarios están encriptados y el desensamblador no puede leerlos. Esto se puede superar volcando el contenido del archivo descifrado de gdb.

Mi pregunta es sobre el descifrado de los binarios (que se realiza sobre la marcha al inicio del programa) para todos ejecutable MACH-O que tienen el encryption_id en la sección LC_ENCRYPTION_INFO, ajustado a 1.

  1. no es una herramienta que descifra los archivos para usted? ¿Alguna recomendación?
  2. ¿hay información disponible sobre cómo funciona el proceso? Aparentemente es Encriptación AES? ¿Qué tecla se usa? ¿Es fácil de replicar con su propio programa ?

¡Gracias por cualquier apuntador!

+0

Así que lo que está planteando es cómo romper otros desarrolladores de aplicaciones? No estoy seguro de si StackOverflow es el lugar adecuado para hacer esta pregunta, ya que su principal objetivo es desarrollar cosas, no aplicaciones de ingeniería inversa desarrolladas por otros. Creo que podrías ser mejor en un sitio pirata o pirata informático. –

+2

¿De verdad? ¡Pensé que el desbordamiento de la pila también tenía un sonido de ingeniería inversa! (como desbordando su pila con demasiados datos ...) En una nota más seria, creo que esto es un buen conocimiento general para todos los desarrolladores, y no un tipo de cosas tabú subterráneas. – pracheta986919

+0

user986919 tiene razón, no puede implementar seguridad en su aplicación sin saber cómo un hacker intentará romperla. Si una aplicación típicamente compilada puede ser de ingeniería inversa, ofrézcala por su cuenta. – Daniel

Respuesta

7

cuestiones éticas sobre la piratería/grietas/etc a un lado, vamos a discutir los detalles:

  • En OS X el descifrado binaria se realiza por un No robe MacOS X.Kext (cariñosamente conocido como DSMOS).
  • En iOS, el descifrado binario es realizado por FairPlay kext.

    En ambos casos, el cargador Mach-O kernel es responsable de esto. Si realmente necesita entrar en los detalles, es el localizador Apple Protect que maneja el descifrado. En el lenguaje de XNU, un "buscapersonas" es un componente que es responsable de tomar las páginas de VM y recuperarlas de un almacén de respaldo (intercambio, archivo de memoria asignada, etc.). Es la de Apple Protege Pager que se pide a la kext (uno de los dos anteriores)

    Hay un gran libro que cubre los detalles del kernel - http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651

    Como usted declaró correctamente, este cifrado es fácilmente derrotado - en un dispositivo con jailbreak (o una PC con privilegios de administrador) puede usar las API de Mach VM para leer la imagen descifrada. Eso es en realidad mencionado en el libro anterior, con una herramienta de muestra para hacer eso (entre otros trucos de VM). Alternativamente, Stefan Esser tiene una herramienta simple que descifra los binarios al inyectar un .dylib simple en el espacio de direcciones del proceso cuando se carga, usando DYLD_INSERT_LIBRARIES. github.com> stefanesser> dumpdecrypted.

esperanza esto ayuda

TG

Cuestiones relacionadas