Debugeando aplicaciones de Android

Hoy en día los teléfonos móviles se han convertido en un elemento mas de nuestro día a día, es raro estar hoy en el metro o cercanías, sin ver gente viendo series en su móvil, jugando, escuchando música, usando apps o simplemente hablando. Afortunadamente ya paso la fiebre de las apps, donde la gente se instalaba apps simplemente por ver quien tenia mas, ahora se usan apps mas especificas, pero ¿realmente sabemos que hacen esas apps por debajo?.

La gente que amamos el software libre, amamos sobre todo su libertad a la hora de poder trastear con el, su transparencia a la hora de poder ver las tripas de aquello que estamos usando, no solemos instalar aplicaciones a ciegas, si esta no respeta nuestra privacidad, normalmente las aplicaciones que bajamos de fdroid, cumplen esos compromisos, no piden mas permisos que los necesarios y evitan usar servicios privativos de terceros donde nuestros datos puedan caer en un nicho para el BIG DATA.

Pero mas alla de que podamos ver el código de estas apps ¿tenemos herramientas para poder ver que hacen estas apps? pues si, vamos a ir detallandolas:

  • ADB(Logcat): La herramienta ADB nos proporciona multiples funciones para conectarnos a nuestro terminal android, asi como instalar aplicaciones, realizar backups de la rom, shell, logs,etc..

Para usar ADB tan solo tenemos que bajar el SDK de android

 wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip

y activar la depuracion USB en nuestro movil android(en algunos terminales de android viene quitada esa opcion, para ello hay que habilitar el modo desarrollador, pulsando varias veces en el numero de compilación de nuestro terminal)

Ahora que tenemos ADB instalado podemos por ejemplo logear todo lo que esta pasando con nuestra aplicacion fennec en nuestro terminal con el siguiente comando:

adb "logcat" |grep fennec > ~/fennec_log.txt

Asi podemos ver datos como estos:

/data/data/org.mozilla.fennec_fdroid/code_cache/secondary-dexes)
I/MultiDex( 9093): Blocking on lock /data/data/org.mozilla.fennec_fdroid/code_c
che/secondary-dexes/MultiDex.lock
I/MultiDex( 9093): /data/data/org.mozilla.fennec_fdroid/code_cache/secondary-de
es/MultiDex.lock locked
I/MultiDex( 9093): MultiDexExtractor.load(/data/app/org.mozilla.fennec_fdroid-1
apk, false, )
D/dalvikvm( 9093): Trying to load lib /data/app-lib/org.mozilla.fennec_fdroid-1
libmozglue.so 0x41efdd00
D/dalvikvm( 9093): Added shared lib /data/app-lib/org.mozilla.fennec_fdroid-1/l
bmozglue.so 0x41efdd00
D/dalvikvm( 9093): No JNI_OnLoad found in /data/app-lib/org.mozilla.fennec_fdro
d-1/libmozglue.so 0x41efdd00, skipping init
W/GeckoLinker( 9093): /data/app-lib/org.mozilla.fennec_fdroid-1/libnss3.so: Rel

Aqui por ejemplo podemos ver las librerias que esta usando y donde almacena los datos dentro de nuestro android.

Logcat tiene un montón de parametros que podemos ver en –> https://developer.android.com/studio/command-line/logcat

  • ADB forwarding(Necesario root): Si queremos sniffar las conexiones que vienen desde nuestro telefono android, podemos realizar un forwarding de los puertos para capturar trafico con wireshark,tcpdump,etc..

Lanzamos ADB en nuestro terminal indicando los puertos que vamos a utilizar para el forwarding

    adb forward tcp:31337 tcp:31337

Ahora filtramos la captura con tcpdump(para darle los datos mas limpios a wireshark) concatenando con nuestro puerto local(el que hemos enlazado para el forwarding de adb) via netcat

Para poder realizar este captura es necesario tener acceso root al teléfono osea nuestro teléfono tiene que esta rooteado, si ya lo tenemos seguimos con los siguientes comandos:

Bajamos tcpdump

wget https://www.androidtcpdump.com/download/4.9.2.1.9.0/tcpdump

Accedemos a adb como root

adb root
adb remount

Copiamos tcpdump a nuestro móvil

adb push ./tcpdump /system/xbin/tcpdump 

adb shell "tcpdump -i wlan0 -w port 80 | netcat -l -p 31337"

Ahora desde otro terminal nos traemos los datos desde netcap a wireshark

netcat localhost 31337 | wireshark -i - -kS
  • AndroidDump: Esta utilidad incluida en Wireshark, nos permite capturar datos de los dispositivos android, para utilizarla necesitamos tener instalado el SDK de Android y wireshark en nuestro equipo.

Listamos las interfaces disponibles

./androiddump --extcap-interfaces

Lanzamos la captura a un archivo de texto(en teoria se podria usar –fifo |wireshark pero a mi no me ha funcionado)

./androiddump --extcap-interface=android-logcat-events-52047605bcc62100 --fifo=/tmp/test.pcapng --capture

Abrimos wireshark y cargamos la captura

wireshark /tmp/test.pcapng 

Como vemos tenemos varias opciones para ver que hacen esas apps «por debajo» si todavia queremos ver mas las tripas de nuestras apps, los siguientes enlaces pueden ayudar.

https://elbinario.net/2017/03/20/destripando-aplicaciones-en-android-primera-parte/ https://elbinario.net/2017/04/03/destripando-aplicaciones-en-android-final/

Compartir

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax