DEX

    Decompilador de Dex a Java

    jadx.png

    Como la mayoría ya sabréis, .dex es el formato de fichero ejecutable que la máquina virtual Dalvik. Y cómo muchos ya también sabéis, aunque las aplicaciones Android las escribamos en Java (a menos que uses NDK, o algún framework de terceros que te permita codificar en algún otro lenguaje), pero no es el código Java o más bien el bytecode de Java lo que se ejecuta en el sistema, sino que hay un paso intermedio que convierte el bytecode de Java (.class) a bytecode de Dalvik (.dex) y esto es lo que se ejecuta.

    Nov 2, 2015
    ProgramaciónAndroid

    Androguard, ingeniería inversa para Android

    hackAndroid

    Con esta aplicación Androguard (hecha en Python) podrás realizar ingeniería inversa a las aplicaciones Android.

    Algunas cosas que puedes hacer:

    • Mapear y manipular (escritura y lectura) DEX/CLASS/APK/JAR
    • Acceso al análisis del código (instrucciones, bloques, etc)
    • Volcar las clases JVM a memoria
    • ... y mucho más.
    Puedes descargarla desde aquí.
    May 22, 2011
    HackingProgramaciónAndroid

    Dalvik VM: Ficheros .dex

    En esta entrada vamos a hablar de la estructura interna de los ficheros .dex. Lo primero, decir que, los ficheros .dex se encuentran empaquetados dentro los archivos .apk (Android Package). A continuación podemos ver una imagen con la estructura interna de estos ficheros:

    dex_structure

    Como podemos apreciar, un fichero .dex esta divido en distintas secciones llamadas “pools”. El pool de strings contiene todos los Strings que las clases dentro del .dex usan. En pool de tipos (type_ids) se guardan los distintos tipos datos usados en la aplicación, etc. Además de las secciones mostradas en la imagen, en la estructura actual de los ficheros dex existe una sección más por debajo de la de datos (data) llamada link_data o enlace de datos. En este momento dicha sección no está documentada. Todo lo que dice la documentación oficial es que en ella se guarda información sobre los ficheros enlazados estáticamente. Si el fichero no es enlazado esta sección permanece vacía y dicha documentación concluye diciendo que dicha sección se use como mejor se adecue a nuestra implementación.

    Veamos la estructura de cada sección.

    Nov 3, 2010
    AndroidLinux

    Dalvik VM: Optimización

    android_apple

    Una de las tareas críticas de Dalvik es la optimización del código (byte code) para maximizar los recursos del sistema. Recordemos que Dalvik es una máquina virtual para correr sobre sistemas ligeros y con recursos escasos.

    Esta fase es realmente crítica, especialmente cuando el byte code de Dalvik es generado a partir del de Java, lenguaje con fama de lento y pesado.

    Este proceso de optimización se lleva a cabo justo antes de que la aplicación es ejecutada por primera vez.

    Sep 28, 2010
    AndroidLinux