Estaba intentando extraer datos de una aplicación Android que utiliza SQLcipher. SQLcipher es una extensión de SQLite que cifra los archivos de la base de datos con AES de 256 bits.
La mayor parte del código de la aplicación está comprimido y protegido con algún tipo de material contra la ingeniería inversa, por lo que no hay código fuente ni depuradores. Sin embargo, el binario de SQLcipher se encuentra en lib/libsqlcipher.so
. Tengo curiosidad por saber si puedo extraer la clave de encriptación simplemente intercambiando libsqlcipher.so
(por ejemplo, modificar sqlite3_key
para que registre la clave de encriptación en un archivo). El plan es compilar mi propia versión de libsqlcipher.so
, reempaquetar el APK, y ejecutarlo en un dispositivo.
¿Funcionará este método como se espera? Suena demasiado fácil para ser verdad:)
0 votos
¿Así que estás tratando de averiguar la contraseña/clave estática incrustada y oculta en la aplicación que se utiliza para proteger la base de datos? Si la sustitución de la biblioteca funciona, depende de las medidas anti-reversión. Si esas medidas están bien implementadas cada hash de la librería se comprueba antes de ser cargada. Por lo tanto, puede haber una ventana de tiempo muy pequeña entre la comprobación y la carga de la biblioteca.
0 votos
Para añadir a lo que dijo Robert, supongo que
libsqlcipher.so
vive en el archivo .apk, ¿no es así? Si los autores de la aplicación están realmente preocupados por la seguridad, incluso tratando de reemplazar el .so y reensamblar el .apk hará que alguna comprobación de firma falle, ya que la firma será cambiada por una personalizada.