Android Apps:
Un dia sin dex2jar y
sin apktool
Salvador Mendoza
Twitter: @Netxing
Blog: salmg.net
Agenda
● Introducción
● Terminologia
● Enjarify
● ClassyShark
● JEB
● JADX
● JD-GUI
● Qark
● dare
● lint
Introducción
● dex2jar simplemente no funciona o su “traduccion” no es la óptima
● La aplicación cuenta con seguridad extra
● El dispositivo no se puede “rootear”
● No se puede “troyanizar” el código
● El firmar las aplicaciones está fuera de alcance
Terminologia
● Ingeniería Inversa: Es el arte de desmembrar un dispositivo o programa
para entender su funcionamiento interno o externo del mismo.
● DMV: Maquina Virtual Dalvik
● Bytecode: Transformación de las clases para usarse en MVD
● Dex code: Bytecode -> Dex = Codigo compilado de la aplicacion
● Smali code: Codigo en ensamblador de la aplicación = Dex -> Smali
Enjarify
● Google es el dueño.
● No trata de “traducir” Dalvik a Bytecode
● Puede ser optimizado con PyPy en vez de CPython
● Diseñado para trabajar en la mayoría de las ocasiones
● Si hay errores te los muestra, no adivina ocultamente como dex2jar
● Es capaz de manejar clases con nombres en Unicode sin problemas
● Entre otras muchas cosas
https://github.com/google/enjarify
ClassyShark
● Una herramienta independiente
● Extrae información de las clases, miembros y dependencias
● Soporta librerías(.dex, .aar y .so) y ejecutables (.apk, .jar y class)
● Maneja todos los archivos .xml
https://github.com/google/android-classyshark
JEB
● Potente aplicacion empresarial para hacer ingenieria
inversa(Android, PDF y otros módulos)
● Para todo tipo de apk incluso aquellas que otros decompiladores
no soportan
● Altamente configurable
● Usado para hacer reverse a las funciones decrypt y encrypt en
Samsung Pay
https://www.pnfsoftware.com/
JEB
JADX
● Aplicación que muestra en forma de mapeo las clases y
dependencias del apk
● Ambiente grafico, de facil uso
● De Dex a Java(decompilador)
● Soporta .dex .class .apk .jar
https://github.com/skylot/jadx
JD-GUI
● Decompilador de apk > Java 5
● Una aplicación que no tiene dependencias
● Sencilla y practica
● Maneja diferentes plug-ins: Intillij IDE y otro para Eclipse
http://jd.benow.ca/
Qark
● Quick Android Review Kit
● Es un framework completo
● Busca vulnerabilidades y es capaz de crear PoC apks
● Inclusive puede crear comandos adb para explotar alguna
vulnerabilidad
● Implementa dex2jar underground y apktool
● Recomendable para un análisis completo de las clases y de los
paquetes
https://github.com/linkedin/qark
dare
● Analizador de aplicaciones Android
● Específicamente trabaja en archivos .dex y .apk
● Muy potente solo usando 9 reglas de las 257 Dalvik opcodes
para el reverse
● Tiene la habilidad de “reescribir” entradas del bytecode que
no ha sido verificado y lo convierte en bytecode verificado
http://siis.cse.psu.edu/dare/
lint
● Revisar seguridad en la apk
● Corre desde la terminal
● Muestra en tiempo real algún tipo de falla en la apk o a archivo
● Genera reporte rápido y específico
SDK tool
Preguntas?
Salvador Mendoza
Twitter: @Netxing
Blog: salmg.net
Gracias!
Salvador Mendoza
Twitter: @Netxing
Blog: salmg.net

Android apps: un dia sin dex2jar y sin apktool

  • 1.
    Android Apps: Un diasin dex2jar y sin apktool Salvador Mendoza Twitter: @Netxing Blog: salmg.net
  • 2.
    Agenda ● Introducción ● Terminologia ●Enjarify ● ClassyShark ● JEB ● JADX ● JD-GUI ● Qark ● dare ● lint
  • 3.
    Introducción ● dex2jar simplementeno funciona o su “traduccion” no es la óptima ● La aplicación cuenta con seguridad extra ● El dispositivo no se puede “rootear” ● No se puede “troyanizar” el código ● El firmar las aplicaciones está fuera de alcance
  • 4.
    Terminologia ● Ingeniería Inversa:Es el arte de desmembrar un dispositivo o programa para entender su funcionamiento interno o externo del mismo. ● DMV: Maquina Virtual Dalvik ● Bytecode: Transformación de las clases para usarse en MVD ● Dex code: Bytecode -> Dex = Codigo compilado de la aplicacion ● Smali code: Codigo en ensamblador de la aplicación = Dex -> Smali
  • 5.
    Enjarify ● Google esel dueño. ● No trata de “traducir” Dalvik a Bytecode ● Puede ser optimizado con PyPy en vez de CPython ● Diseñado para trabajar en la mayoría de las ocasiones ● Si hay errores te los muestra, no adivina ocultamente como dex2jar ● Es capaz de manejar clases con nombres en Unicode sin problemas ● Entre otras muchas cosas https://github.com/google/enjarify
  • 6.
    ClassyShark ● Una herramientaindependiente ● Extrae información de las clases, miembros y dependencias ● Soporta librerías(.dex, .aar y .so) y ejecutables (.apk, .jar y class) ● Maneja todos los archivos .xml https://github.com/google/android-classyshark
  • 7.
    JEB ● Potente aplicacionempresarial para hacer ingenieria inversa(Android, PDF y otros módulos) ● Para todo tipo de apk incluso aquellas que otros decompiladores no soportan ● Altamente configurable ● Usado para hacer reverse a las funciones decrypt y encrypt en Samsung Pay https://www.pnfsoftware.com/
  • 8.
  • 9.
    JADX ● Aplicación quemuestra en forma de mapeo las clases y dependencias del apk ● Ambiente grafico, de facil uso ● De Dex a Java(decompilador) ● Soporta .dex .class .apk .jar https://github.com/skylot/jadx
  • 10.
    JD-GUI ● Decompilador deapk > Java 5 ● Una aplicación que no tiene dependencias ● Sencilla y practica ● Maneja diferentes plug-ins: Intillij IDE y otro para Eclipse http://jd.benow.ca/
  • 11.
    Qark ● Quick AndroidReview Kit ● Es un framework completo ● Busca vulnerabilidades y es capaz de crear PoC apks ● Inclusive puede crear comandos adb para explotar alguna vulnerabilidad ● Implementa dex2jar underground y apktool ● Recomendable para un análisis completo de las clases y de los paquetes https://github.com/linkedin/qark
  • 12.
    dare ● Analizador deaplicaciones Android ● Específicamente trabaja en archivos .dex y .apk ● Muy potente solo usando 9 reglas de las 257 Dalvik opcodes para el reverse ● Tiene la habilidad de “reescribir” entradas del bytecode que no ha sido verificado y lo convierte en bytecode verificado http://siis.cse.psu.edu/dare/
  • 13.
    lint ● Revisar seguridaden la apk ● Corre desde la terminal ● Muestra en tiempo real algún tipo de falla en la apk o a archivo ● Genera reporte rápido y específico SDK tool
  • 14.
  • 15.