Signature spoofing - Usurpation de signature

Mise à jour : LineageOs 17/18 - Android 10/11

Le support de l'usurpation de signature (signature spoofing) est nécessaire à l'utilisation de microG (remplacement des services google contenus dans opengapps par les services microG)

Ce document décrit comment mettre en place l'usurpation de signature sur une ROM LineageOS. Trois méthodes sont décrites, à sélectionner en fonction de la version de Android et la disponibilité des outils. A ce jour (Septembre 2021) :

Référence

Sommaire

1 - Préalable

$ cat <<EOF> googleplayservices
GmsCore
GoogleBackupTransport
GoogleFeedback GoogleLoginService
GoogleOneTimeInitializer GooglePartnerSetup
GoogleServicesFramework
Phonesky, SetupWizard
Velvet
EOF

$ for i in $(cat googleplayservices); do { echo $i; adb shell pm list packages $i; };done

2 - Solution Xposed - FakeGapps

3 - Solution NanoDroid-Patcher

3.1 - Préalable

3.2 - Téléchargement

$ wget https://downloads.nanolx.org/NanoDroid/Stable/NanoDroid-patcher-23.1.2.20210117.zip
$ wget https://downloads.nanolx.org/NanoDroid/Stable/NanoDroid-microG-23.1.2.20210117.zip.sha256
$ wget https://downloads.nanolx.org/NanoDroid/Stable/NanoDroid-patcher-23.1.2.20210117.zip.sha256.sig
$ sha256sum -c NanoDroid-patcher-23.1.2.20210117.zip.sha256
NanoDroid-patcher-23.1.2.20210117.zip: Réussi
$ wget https://downloads.nanolx.org/NanoDroid/Stable/photonic.asc
$ gpg --import photonic.asc
gpg: clef 340FD70EFFC52B26 : clef publique « Christopher Roy Bratusek <nano@jpberlin.de> » importée
gpg: Quantité totale traitée : 1
gpg: importées : 1

$ gpg --list-keys
.....
pub rsa2048 2016-12-02 [SCEA]
B0ABCE622A077B584B81339E340FD70EFFC52B26
uid [ inconnue] Christopher Roy Bratusek <nano@jpberlin.de>
sub rsa2048 2016-12-02 [SEA]
$  gpg --keyserver pgp.mit.edu --recv B0ABCE622A077B584B81339E340FD70EFFC52B26
.....
gpg: échec de réception depuis le serveur de clefs: No keyserver available

$ gpg --keyserver pgp.mit.edu --search-keys nano@jpberlin.de
....
gpg: error searching keyserver: No keyserver available
gpg: échec de recherche au sein du serveur de clefs : No keyserver available
$ gpg --verify NanoDroid-patcher-23.1.2.20210117.zip.sha256.sig 
gpg: les données signées sont supposées être dans «NanoDroid-patcher-23.1.2.20210117.zip.sha256 »
gpg: Signature faite le dim. 17 janv. 2021 15:32:34 CET
gpg: avec la clef RSA 7EBB4D381A07C3F8000E1A235871E54A5634A9E9
gpg: Bonne signature de « Christopher Roy Bratusek <nano@jpberlin.de> » [inconnu]
gpg: Attention : cette clef n'est pas certifiée avec une signature de confiance.
gpg: Rien n'indique que la signature appartient à son propriétaire.
Empreinte de clef principale : B0AB CE62 2A07 7B58 4B81 339E 340F D70E FFC5 2B26
Empreinte de la sous-clef : 7EBB 4D38 1A07 C3F8 000E 1A23 5871 E54A 5634 A9E9

3.3 - Déodexage

La ROM étant installée, vérifier qu'elle est "deodexed" :
$ adb pull /system/framework/services.jar
$ unzip -l services.jar |grep classes.dex
2749064 2018-10-10 15:14 classes.dex

3.4 - Flashage du patch

$ adb push NanoDroid-patcher-23.1.2.20210117.zip /sdcard/Download

4 - Solution Lsposed - FakeGapps

4.1 - Préalable

4.2 - Installation