Ingeniería inversa en Android

ingenieríainversa
android

#1

Hola holita gente.

Tengo un problema tajante y sonante con un APK que me ha enviado un cliente, el cual le hizo otro programador que ahora mismo se desentiende de todo, y que no entregó el código fuente (maravilloso, ¿no?). El proceso parecía sencillo: subir el APK al PlayStore. Pero al intentar hacerlo, después de meterme el currazo para adaptar todo el artwork que disponíamos para el PS, Google me dice que no puedo subir esa app por los siguientes motivos:

  • Está habilitado el modo de depuración.
  • El ID de App ya existe (aunque debe ser una beta cerrada, porque no lo encuentro)

¿Solución? Meterme en el código de la app y modificar estos valores. ¿Problema? No hay código fuente y no tengo conocimientos para decompilarla, ni me termino de fiar de respuestas de 2014 de StackOverflow.

Claro que, pensando en apps híbridas en lugar de nativas, me pide que también se compile en iOS (con fecha de entrega bastante limitada). Esto si es algo que yo difícilmente puedo hacer, pero mientras encuentro un programador de Swift capaz de hacerlo (o servicios que me lo permitan), creo que me sería muy beneficioso disponer del código fuente en un repo. Hasta ahora he encontrado soluciones para extraer assets de un APK, pero no el código.

¿Alguien con experiencia en este campo y que me pueda echar una mano?

Thanks!


#2

Tendrás que decompilar la app y «compilar tal cual salga» para quitar el modo debug, el problema es que si está con proguard o algo el código será totalmente ilegible y realizar un cambio mínimo podría llevarte varias horas.

Hay miles de servicios webs que te decompilan una apk, como este


#3

La documentación de Google me lo pintaba tan sencillo como cambiar un valor de Gradle, pero estaba claro que no iba a ser tan fácil… Gracias por el link y la info! Voy a meterle mano y a cruzar los dedos.


#4

Ale al final todo ha ido guay, he podido recompilar el APK con los cambios en AndroidManifest.xml oportunos.

Al final he seguido este post de XDA Developers. Bastante sencillo.

Con respecto al debugger, incluso volviendo a compilar me lo devolvía como que estaba habilitado, así que he cambiado el valor a mano en el AndroidManifest. No me parece una buena práctica, pero la app funciona y Google se lo ha tragado.

Y las herramientas utilizadas: APK Tool y VisualStudio Code. También he encontrado otra herramienta que me resulta curiosa para tema de ingeniería inversa en Android y no está de mal compartirla. Es APK Studio.

Sugiero mantener el hilo abierto para más referencias de ingeniería inversa en Android, que preveo que voy a tener más marrones de estos.


#5

¿te has asegurado de compilarla y exportarla debidamente firmada? Como la hayas subido con firma de debugger y después quieras actualizarla vas a tener problemas.


#6

Pues ahora me dejas un poco con la duda. Según he estado leyendo en la documentación de APK Tool, foros de XDA y demás, con ese apaño que le he hecho bastaría. Ahora, que no se a ciencia cierta hasta qué punto afecta Gradle en esto.

Lo he firmado usando el mismo sistema que uso con Ionic (usando jarsigner) y la misma keystore que uso para firmar mis releases. De todos modos, si hubiese algún problema, el marrón ya se lo comerá el programador original, que ni si quiera nos dejó documentación…


#7

En este post hablo sobre ingeniería inversa y los pasos para descompilar una aplicación en Android https://medium.com/@testica/consiguiendo-acceso-premium-en-aplicación-android-ingeniería-inversa-692c330a768b

Espero que te sirva.