Nota: No voy a proporcionar ningún enlace. Debes sentirte cómodo ensuciándote las manos por tu cuenta cuando te sumerjas en una tarea de este tipo.
Defino varios niveles basados en la cantidad de miradas que puedes hacer en un APK.
Nivel 1: Básico: Se utiliza para editar imágenes, cambiar iconos y algunas otras cosas menores de diseño.
Descompilar/recompilar utilizando el gestor de APK. Siempre que no lo hayas estropeado, lo más probable es que un APK funcione incluso después de recompilar y hacer cambios en las imágenes/diseño.
Nivel 2: Editar las librerías del APK aka descompilar el archivo classes.dex y hacer cambios en los archivos smali.
Usando smali/backsmali descompilas el archivo classes.dex dentro de un apk para obtener los archivos de la librería smali que editas para cambiar alguna funcionalidad realmente importante de la propia app (puedes llamarlo con seguridad meterte con el código fuente de la app y cambiarlo hasta su base). Sin embargo, si usted hizo esta pregunta, dudo que usted será capaz de hacer este paso por su cuenta (a menos que usted es alimentado con cuchara de código smali por algún tutorial) porque el lenguaje smali es realmente cerca de la asamblea y es altamente ofuscado pieza de código. Sin embargo, si usted está interesado, usted puede leer sobre Dalvic Opcodes si quieres empezar en esto. Esto es difícil.
Además, siempre que no hayas estropeado el código fuente, puedes recomponer el classes.dex usando smali/backsmali y volver a ponerlo en el apk y debería funcionar.
Deberías poder encontrar el classes.dex al abrir el apk con algún archivador como winrar. Sin embargo, se recomienda el descompilador de apk (lo necesitarás si quieres hacer cambios en classes.dex y volver a ponerlo en el apk).
Nivel 3: Intentar leer el código fuente de la aplicación en formato java.
Ahora este es interesante. Pero antes de empezar, debo advertirte: Esto es puramente educativo por naturaleza, no puedes hacer cambios en ese código java y recompilar la aplicación. Porque no existe tal cosa que pueda conseguir un código java que funcione perfectamente a partir del código smali. Sin embargo, si sólo quieres comprobar el código en la superficie de cómo funciona la aplicación, sigue leyendo.
Consigue dex2jar. Al igual que en el paso anterior, obtenga el archivo classes.dex dentro del apk y conviértalo en jar con dex2jar. Ahora sólo tienes que utilizar cualquier convertidor de clases java a java y deberías obtener un código java parcialmente preciso. Debería ser lo suficientemente bueno por razones educativas, sin embargo, ya que no tienes el código java exacto, recompilar el classes.dex no funcionará y la aplicación definitivamente se bloqueará. No hay forma de evitarlo.
Ahora dudo mucho que puedas profundizar más en un APK compilado que esto. Buena suerte!