Le tutoriel qui vous est proposé ici va vous permettre de corriger le DevMenu du firmware 6.0.1 afin de supprimer la notification de démarrage concernant la mise à disposition d'un firmware supérieur.
Actuellement le firmware 6.2.0 est disponible et si vous disposez d'un firmware inférieur le message suivant va s'afficher.
Vous l'aurez compris l'objectif de ce tutoriel est donc d'aller supprimer ce message informatif gênant qui apparaît au démarrage.
Attention ce tutoriel sous entend que vous disposiez du DevMenu v6.0.1.
Étape 1 - Décompresser l’exécutable "main"
Vous avez besoin pour procéder à ce tutoriel de disposer d'HacTool, il est possible de le télécharger ici ainsi que l'exécutable DevMenu "principal". Cet exécutable devrait avoir les propriétés suivantes :
Taille: 5807948 octets
SHA256: DD1BA1C488AF2CD6EAC1B1DCAAB143BF4F2003C0DB7B3FEA74113D80D25C274E
Si vous avez un fichier NSP (pas une version de LayeredFS), vous devez extraire le fichier NSP puis le plus grand fichier NCA avec les commandes suivantes:
hactool -t pfs0 -k keys.txt DevMenuApp.nsp --pfs0dir=extract
hactool -k keys.txt --exefsdir=exefs --romfsdir=romfs BiggestFileInExtractDir.nca
Maintenant, vous devriez avoir un fichier "principal" dans le répertoire "exefs".
Vous devez le décompresser avec la commande suivante:
hactool -t nso0 -k keys.txt exefs/main --uncompressed=mainDec
Le fichier exécutable non compressé "mainDec" doit avoir les propriétés suivantes:
Taille: 15011376 octets (14 Mio)
SHA256: E802D200640E0F0E4A86913BB616C682DA0BE3D47F82A97F976F37FC4B3DF125
Étape 2 - Corriger l'exécutable "mainDec"
Ouvrez "mainDec" avec un éditeur hexadécimal et remplacez les octets suivants :
Code ARM binaire: E80345391F19007161000054E8074539 => 080080521F0100716100005408008052
Vérification du hachage :
EA43FE633F51336D3169BBFC70E280BAD95C4EF501AFC7E9D6C2310B745C8FBE => C1BEBE80DFE604D933F049090E95F5DFB60287E2CF65E46D462646EB711D
Le fichier "mainDec" modifié doit avoir les propriétés suivantes :
Taille: 15011376 octets (14 Mio)
SHA256: 82F604C51F2B71D14571308DD5B87273BE1448F68432841BFB244986BA71CCBD
Maintenant, vous pouvez remplacer "exefs / main" par le "mainDec" patché (le renommer en "main").
Si vous utilisiez une version LayeredFS de DevMenu, vous n'avez plus rien à faire.
S'il s'agissait d'une version NSP, vous devrez reconstruire le NSP à l'aide de hacPack.
Méthode utilisée pour rechercher le correctif
L'exécutable a été ouvert avec IDA Pro 7.0 et le loader "nxo64" est disponible à l'adresse suivante.
Il y avait un suivi sur l'utilisation de la chaîne "Found version" et cela code suivant qui récupère et vérifie la version du firmware :
Une partie de ce code a été remplacée grâce à armconverter.com
Toutes ces modifications font que, quelle que soit la version de FW récupérée, elle n'est plus vérifiée et les conditions permettant d'éviter l'affichage du panneau de notification sont remplies.
Enfin, pour que l'exécutable soit accepté lors de son lancement, l'en-tête NSO0 doit être modifié à l'emplacement du hachage de la partie ".text" (voir switchbrew.org/wiki/NSO pour plus de détails).
Comme vous le voyez les modifications sont simples à faire mais elles ne sont pas données à tout le monde, le risque de brick est présent surtout si vous oubliez un caractère.
Merci à OperationNT (Gbatemp)