J'essayais d'extraire des données d'une application Android qui utilise SQLcipher. SQLcipher est une extension de SQLite qui crypte les fichiers de base de données avec AES 256 bits.
La plupart du code de l'application est compressé et protégé par une sorte de système anti-ingénierie inverse, donc pas de code source et pas de débogueurs. Cependant, le binaire SQLcipher se trouve dans lib/libsqlcipher.so
. Je me demande si je peux extraire la clé de cryptage simplement en échangeant libsqlcipher.so
(par exemple en modifiant la fonction sqlite3_key
pour qu'elle enregistre la clé de cryptage dans un fichier). Le plan est de compiler ma propre version de libsqlcipher.so
, de reconditionner l'APK et de l'exécuter sur un appareil.
Cette méthode fonctionnera-t-elle comme prévu? Cela semble trop facile pour être vrai :)
0 votes
Alors vous essayez de trouver le mot de passe/clé statique intégré et caché dans l'application qui est utilisé pour protéger la base de données ? Si le remplacement de la bibliothèque fonctionne, cela dépend des mesures anti-retournement. Si ces mesures sont bien implémentées, chaque hachage de bibliothèque est vérifié avant son chargement. Par conséquent, il pourrait n'y avoir qu'une très petite fenêtre de temps entre la vérification et le chargement de la bibliothèque.
0 votes
Pour ajouter à ce que Robert a dit - Je suppose que
libsqlcipher.so
se trouve dans le fichier .apk, n'est-ce pas? Si les auteurs de l'application sont vraiment préoccupés par la sécurité, même en essayant de remplacer le .so et de recompiler le .apk, certaines vérifications de signature échoueront, car la signature sera modifiée en une signature personnalisée.