Ingeniería inversa Android


#1

Es un tema el cual me he visto forzado a aprender en dos noches. He sacado un montón de documentación, en su mayoría obsoleta, pero no deja de ser útil para según que cosas. Uno de los mejores artículos que he encontrado, bajo mi criterio, es este post de Tyler McCraw.


#2

APK Decompiler Online.

Más rápido y sencillo


#3

Yo personalmente uso JADX para decompilar APKs. Es relativamente rápido, resistente a errores (otros decompiladores petan y paran la decompilación al encontrar un error) y permite exportación masiva de archivos .java de un APK.

Luego está JEB, que es de pago pero tiene cosas muy interesantes como poder utilizar el entorno Eclipse sobre el que está montado para poder navegar por el código fuente. Es muy útil para código ofuscado, ya que puedes ver a qué hace referencia un símbolo sin tener que buscarlo a mano, con regex, o leyendo 20 archivos y descartando otras variables o clases que proguard haya llamado igual.

También se me ha olvidado mencionar utilidades como Frida, con la que puedes “engancharte” a métodos de una app y ejecutar código para estudiar su comportamiento. Por ejemplo, te puedes enganchar al método “write” de un Socket para ver qué bytes se envían o a métodos de autenticación para ver cómo se envían los datos. Si no recuerdo mal, también puedes modificar el comportamiento general de la app, pero de esto no estoy seguro.