Je veux modifier une apk pour que son FLAG_SECURE puisse être désactivé. Je ne sais pas si j'ai besoin d'aide. J'ai utilisé Apk tool pour décompiler l'application, je ne sais pas quel fichier spécifique trouver dans smali pour désactiver cela.
Réponse
Trop de publicités?Il n'y a pas de fichier spécifique à modifier. Au lieu de cela, vous devez rechercher un appel spécifique dans tous les fichiers smali. Heureusement, la syntaxe de Smali est très spécifique, ce qui vous permet d'effectuer une recherche facile à l'aide d'un outil de recherche en texte intégral. Je préfère Agent Ransack
(Windows) ou grep -R
(en ligne de commande).
En détail, vous devez rechercher dans les fichiers smali l'un des appels suivants :
Landroid/view/Window;->setFlags(II)V
Landroid/view/Window;->addFlags(I)V
Avant chaque appel sur la même ligne, on note quels registres contiennent les paramètres.
addFlags
const/16 v2, 0x2000
invoke-virtual {v1, v2}, Landroid/view/Window;->addFlags(I)V
La deuxième entrée entre crochets est la plus intéressante ( v2
dans l'exemple).
Si ce paramètre est réglé sur 0x2000
. En détail, il s'agit d'un masque de bits et si le 14e bit est activé, la protection contre les captures d'écran est appliquée à l'écran actuel.
En fait, seule la quatrième position compte. Si elle est 2
o 6
(2+4) ou A
(8+2) ou C
(2+4+8), le bit recherché est activé. Mais en général (dans 99% des cas), vous trouverez la valeur 0x2000
)
Rechercher les lignes précédant le invoke-virtual
s'il existe une commande qui définit le registre que nous recherchons, par exemple : const/16 v2, 0x2000
S'il y a l'appel et que le deuxième paramètre a un paramètre avec l'hexadécimal 2
à la position mentionnée, vous pouvez simplement commenter l'ensemble du texte. invoke-virtual ...
en plaçant un #
devant la ligne.
setFlags
const/16 v1, 0x2000
const/16 v2, 0x2000
invoke-virtual {v0, v1, v2}, Landroid/view/Window;->setFlags(II)V
Pour setFlags, c'est très similaire, à ceci près que l'élément 0x2000
doit être présent dans le deuxième v1
et le troisième v2
mentionné dans les parenthèses.
Faites-le pour chaque occurrence de setFlags
/ addFlags
invocations.
Commentez à nouveau l'ensemble invoke-virtual ...
en plaçant un #
devant la ligne.
Reconstruction APK
Ensuite, il faut reconstruire( apktool b ...
) et signez l'APK construit avec un certificat personnalisé et vous êtes prêt à installer l'application.