Así que tenemos que destripar un binario .apk para Android… bien, empecemos con la cirugía.
1) Comprobemos material quirúrgico. Vamos a necesitar apktool para abrir al paciente.
2) Un vademecum de cómo y por dónde cortar tampoco vendrá mal.
3) Proceder a abrir en canal el .apk
apktool d AndroidLevel0.apk |
4) Buscar un poco dentro de las tripas, a ver si encontramos algo valioso
$ grep -irn "password" * ... AndroidLevel0/smali/com/mobandme/hackit/euskal20/level0/services/CryptographyService.smali:114: direct {p0}, Lcom/mobandme/hackit/euskal20/level0/services/CryptographyService;->decodePassword()Ljava/lang/String; ... |
5. Yo creo que tendremos que empezar examinando esa zona (decodePassword() suena bien 🙂
6. Editamos el services/CryptographyService.smali para incluir una llamada de log justo en el punto en el que la aplicación comprueba nuestro password con el que tiene almacenado.
const-string v0, "DL_Rules" # Después de # invoke-direct {p0}, Lcom/mobandme/hackit/euskal20/level0/services/CryptographyService;->decodePassword()Ljava/lang/String; # move-result-object v2 invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I |
Por cierto, no conocíamos mucho de las interioridades de un paciente Android, asi que tuvimos que revisar varios tutoriales en la guía anteriormente citada hasta entender cómo llamar al método de la clase Log (que nos mostrará en pantalla el password en claro)
7. Ya podemos cerrar el cuerpo del delito. Sutura.
apktool b AndroidLevel0 /tmp/hack.apk |
8. Firmamos nuestra obra de arte
jarsigner -keystore ~/.android/debug.keystore /tmp/hack.apk androiddebugkey |
9. Y le decimos al paciente que se tome esta pastilla:
adb install /tmp/hack.apk |
10. No perder de vista su reacción, porque seguro que nos dice algo interesante que nos permitirá pasar al nivel 5 😉
adb logcat |