Cómo depurar una app imposible de depurar
- Hace poco me encontré con una app imposible de depurar. Esta app bloquea la conexión del depurador, termina anticipadamente cuando se inyecta código y hace colapsar todo el teléfono si se ejecuta en un dispositivo con jailbreak.
- Las apps de iOS suelen incluir protecciones adicionales como detección de jailbreak u ofuscación de código. Esta app en particular combina muchas protecciones.
Versión en video
- Hay una versión en video de esta publicación que muestra el proceso con más detalle.
Índice
PT_DENY_ATTACH
- Evadir
PT_DENY_ATTACH (modo fácil)
- Evadir
PT_DENY_ATTACH (modo difícil)
- Crash del teléfono
- Inyección de código
- Cierre
PT_DENY_ATTACH
- El primer paso es conectar el depurador. En teléfonos con jailbreak, normalmente es fácil conectar el depurador.
- Una función llamada
ptrace bloquea la conexión del depurador. Esta función impide futuras conexiones del depurador mediante la solicitud PT_DENY_ATTACH.
Evadir PT_DENY_ATTACH (modo fácil)
PT_DENY_ATTACH solo bloquea el depurador después de ser llamado. Si se establece un breakpoint antes de la llamada, el depurador se conecta normalmente.
- Se puede evitar la llamada poniendo un breakpoint en la propia función
ptrace.
Evadir PT_DENY_ATTACH (modo difícil)
- Algunos desarrolladores implementan el bloqueo del depurador usando llamadas al sistema directamente en lugar de
ptrace.
- En ese caso, hay que encontrar esa llamada al sistema en el binario y evadirla.
Crash del teléfono
- La app provoca un reinicio suave del teléfono bajo ciertas condiciones. Esto ocurre al llamar en bucle infinito a un método intensivo en memoria.
- Se puede evadir este método usando
lldb.
Inyección de código
- La app crashea cuando se inyecta código. Es muy probable que esto se deba a un identificador de grupo de apps incorrecto.
- En teléfonos con jailbreak, se puede inyectar código sin volver a firmar la app. En caso contrario, el problema puede resolverse haciendo swizzling de métodos.
1 comentarios
Comentarios de Hacker News
Bryce Bostwick hace un trabajo muy genial e inspirador en depuración e ingeniería inversa de apps
En DOS/Windows, los trucos anti-depuración han sido comunes desde hace mucho tiempo
Sorprende que la revisión de la App Store de Apple no rechace apps que hacen llamadas al sistema directas
Tiene curiosidad por saber por qué el autor buscó
svc 0x80en lugar demov w16, #26El autor está listo para responder preguntas
El video de arriba es un video de programación realmente excelente
Tiene curiosidad por saber si esta app era una app legítima o si fue depurada por sospechas de malware
Cómo eludir PT_DENY_ATTACH (modo difícil)
Tiene curiosidad por la notificación "com.apple.tw.twrr"
Tiene curiosidad por saber si conocen personas que hagan ingeniería inversa del código JavaScript de sitios web
Tiene curiosidad por saber si se pueden ejecutar kexts personalizadas en un iPhone con jailbreak