El mundo del reversing en android es muy interesante aunque la verdad no hay tanta información como en el reversing de software desktop, en esta serie de entradas que estare realizando tiene como objetivo que lleguemos a conocer y aprender juntos desde lo básico e ir avanzando.
Requisitos básicos para comenzar en el reversing android:
- Conocimientos básicos sobre java.
- Creatividad y muchas ganas de aprender.
Antes de empezar yo tengo experiencia en la ingeniería inversa de binarios, pero una vez aprendido el reversing no es complicado a adaptarse a esto. Al final de cuentas reversing es reversing y no importa si es de binarios o apk, ya que para todo tenemos que investigar y practicar mucho. Digo todo esto pues he investigado sobre el tema pero sin embargo si sufro algún error indica cual es en los comentarios para editar este tutorial y tener una mejor referencia.
Preparando el entorno Windows
Primero necesitamos las herramientas para tener nuestro entorno listo y preparado:
- Java JDK : Herramientas de desarrollo para java.
- SDK Platform Tools : Incluye herramientas que interactúan con la plataforma Android, como adb, fastboot y systrace. Nosotros usaremos adb para conectar nuestra dispositivo movil con nuestra computadora.
- ApkTool : nos servirá para descompilar y recompilar nuestro apk.
- Dex2Jar : nos permitira convertir un archivo DEX a JAR.
- Jadx : nos permitirá ver el código fuente de un archivo JAR.
- Cmder: Emulador de la consola de linux en windows , necesario para utilizar los comandos de linux para realizar nuestros objetivos.
- Uber Apk Signer : nos permitirá firmar nuestra apk.
Instalando Java JDK
Procedemos a descargar de su web oficial, para instalar solo es dar siguiente siguiente.
Instalando SDK Platfom Tools
Aquellas personas que tengan Android Studio no es nesecario descargar esto , pero si no asi. Podemos descargar SDK Platform Tools descargar desde su web click aqui
En este proceso explicare si tenemos Android Studio o SDK Platform Tools. Una vez descargado y descomprimido tendremos platform-tools_r28.0.1-windows que editaremos solo en platform-tools y guardaremos en ruta C:\
y bueno si tenemos Android Studio encontramos en esta direccion C:\Users\[ Nombre_del_Usuario]\AppData\Local\Android\Sdk\platform-tools.
ahora solo queda poner nuestra ruta en el path de windows .
despues elegimos Configuracion avanzada del sistema
con esto ya estaria para trabajar en el siguiente tutorial .
Instalando Apktool
En la pagina oficial click aqui explica el proceso de instalación, considerando que deseamos aprender se da los pasos a continuación.
- Una vez que descargamos el script debemos renombrarlo como apktool.bat
- Descargamos apktool desde el siguiente enlace
- Renombramos el archivo descargado a apktool.jar
- Copiaremos los ficheros apktool.bat y apktool.jar a una carpeta “apktool y lo guardaremos en C:
- Despues guardaremos la direccion donde guardamos dicha carpeta que en mi caso es C:\Program Files\apktool en la path de windows.
- Como último proceso validamos que esta bien configurado la variable de entorno y ejecutamos una CMD, escribiendo apktool en nuestra consola .
Si todo fue realizado correctamente tendremos la herramienta funcionando.
Instalando Dex2jar
Descargamos desde el siguiente enlace , la versión que usaremos en las próximas entradas dex-tools-2.1-SNAPSHOT.zip que descomprimiremos en un carpeta llamada d2j-dex2jar, repetimos el mismo proceso que realizamos con apktool y si marcha todo bien nuestro resultado final al ejecutarlo en la terminal d2j-dex2jar
JADX
Contamos igual con la página web oficial desde el siguiente enlace
Una vez entrando al link de Release de jadx , tenemos dos opciones descargar el exe o el archivo zip que tiene los archivos para usar los comando por consola y la gui, yo usare la ultima opcion. Por ultimo solo toca guardar en el directorio C:\ y no olvidar poner la direccion C:\jadx\bin en el path de windows.
Cmder
Podremos descargar esta herramienta muy util desde su web oficial Enlace .
Nosotros descargaremos la version full , descomprimimos y guardamos donde quisieramos y ejecutemos cuando lo necesitemos.
Uber Apk Signer
La ultima herramienta que usaremos es Uber APK Signer desde el repositorio en GITHUB del siguiente enlace
Para mantener la configuración del entorno se renombra igual con el siguiente nombre **uber-apk-signer.jar, **del mismo modo repetimos el proceso guardando una carpeta con el mismo nombre del archivo jar en el disco C:, y configuramos el PATH respectivo. despues abrimos nuestro editor de texto y copiamos este codigo
@echo off
if “%PATH_BASE%” == "” set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en “%~dp0\uber-apk-signer.jar” %*
y procedemos a guardar como uber-apk-signer.bat en el mismo directorio de uber-apk-signer
Con todo esto seria suficiente para comenzar y seguir con la siguiente entrada nos vemos .