Kali Linux: Trabajar con libsmali-java

 

https://www.onlinetis.com/es/

Kali Linux: Trabajar con libsmali-java

Para trabajar con libsmali-java en Kali Linux, lo primero que debes entender es que esta librería es el corazón de herramientas como smali y baksmali. Se utiliza principalmente para el montaje y desmontaje de archivos DEX (Dalvik Executable) que usan las aplicaciones de Android.

Aquí tienes una guía rápida para instalarla y entender sus funciones principales.


1. Instalación en Kali Linux

Kali suele tener estas herramientas en sus repositorios oficiales. Puedes instalar el paquete completo de smali (que incluye la librería) con el siguiente comando:

Bash
sudo apt update
sudo apt install smali

Si necesitas la librería .jar específica para desarrollar una herramienta propia en Java, generalmente la encontrarás en /usr/share/java/smali.jar.


2. Componentes principales

La librería se divide en dos funciones críticas para la ingeniería inversa de Android:

ComponenteFunciónAnalogía
baksmaliDesensambla archivos .dex o .odex en código Smali.De "binario" a "código legible".
smaliEnsambla archivos .smali de vuelta a un archivo .dex.De "código editado" a "binario ejecutable".

3. Uso básico por terminal

Aunque es una librería de Java, lo más común es interactuar con ella mediante comandos:

  • Para desensamblar un APK (u obtener el código Smali):

    Bash
    baksmali d mi_aplicacion.dex -o carpeta_salida
    
  • Para volver a ensamblar los archivos editados:

    Bash
    smali a carpeta_salida -o classes.dex
    

4. ¿Por qué usar Smali en lugar de Java directamente?

Cuando usas herramientas como jadx para ver código Java, a veces la reconstrucción no es perfecta y el código no se puede volver a compilar.

Smali es una representación de bajo nivel (similar al lenguaje Ensamblador) que:

  1. Es fiel al 100% a lo que ejecuta la máquina virtual Dalvik.

  2. Permite modificar el comportamiento de una app (por ejemplo, saltar una verificación de licencia) y volver a empaquetarla sin errores de compilación.


Consideración importante

Si tu objetivo es simplemente ver el código fuente para entender qué hace una app, quizás te resulte más cómodo usar Bytecode Viewer o JADX, que también vienen preinstalados en Kali. libsmali es para cuando necesitas "ensuciarte las manos" y modificar el binario.

 

Aquí tienes un pequeño script en Bash que puedes guardar en tu Kali Linux para automatizar el flujo de trabajo. Este script detecta si quieres desensamblar o ensamblar basándose en si le pasas un archivo o una carpeta.

Script: smali-helper.sh

Copia este código en un archivo nuevo:

Bash
#!/bin/bash

# Colores para la terminal
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # Sin color

if [ -f "$1" ]; then
    echo -e "${BLUE}[*] Archivo detectado. Desensamblando (baksmali)...${NC}"
    # d = decompile/disassemble
    baksmali d "$1" -o "${1%.*}_out"
    echo -e "${GREEN}[+] Hecho. Código smali en: ${1%.*}_out${NC}"

elif [ -d "$1" ]; then
    echo -e "${BLUE}[*] Carpeta detectada. Ensamblando (smali)...${NC}"
    # a = assemble
    smali a "$1" -o "${1%_out}_nuevo.dex"
    echo -e "${GREEN}[+] Hecho. Archivo generado: ${1%_out}_nuevo.dex${NC}"

else
    echo "Uso: ./smali-helper.sh <archivo.dex o carpeta_smali>"
fi

Cómo prepararlo y usarlo

  1. Dale permisos de ejecución:

    Abre la terminal y escribe: chmod +x smali-helper.sh

  2. Para desensamblar un .dex:

    ./smali-helper.sh classes.dex (creará una carpeta llamada classes_out).

  3. Para volver a crear el .dex tras editarlo:

    ./smali-helper.sh classes_out (creará un archivo llamado classes_nuevo.dex).

¿Qué sucede "bajo el capó"?

Cuando desensamblas, la librería libsmali-java traduce los opcodes binarios de Android a una sintaxis que los humanos podemos leer. Es muy parecido al lenguaje ensamblador tradicional, donde cada línea corresponde a una operación directa del procesador (en este caso, de la Máquina Virtual Dalvik).


Un pequeño truco extra

Si vas a modificar aplicaciones completas frecuentemente, te recomiendo instalar también apktool. Esta herramienta utiliza internamente libsmali-java pero te ahorra el trabajo de extraer manualmente el archivo classes.dex del APK, ya que lo hace todo en un solo paso:

  • apktool d aplicacion.apk (Desmonta todo)

  • apktool b carpeta_aplicacion (Monta todo de nuevo)

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux