Protégez les données en modifiant la partition système du disque dur. Qu'est-ce que Magisk ou comment masquer la racine sous Android

Qu'est-ce qu'une partition réservée ou pourquoi Windows cache-t-il une partie du disque ?

Lors de l'installation de Windows 7, Windows 8, etc. pour la première fois. sur un disque vierge ou formaté (et dans les versions précédentes du système, un tel volume n'existait pas), la première chose que fait Windows est de créer une certaine partition au tout début du disque dur. C'est ce qu'on appelle la partition réservée au système (partition réservée au système ou partition système). La partition est activement utilisée par le système pour installer et charger le corps principal de Windows – ce que nous considérons comme le système d’exploitation lui-même.

Lorsque vous ouvrez le dossier Poste de travail ou simplement Ordinateur, vous ne verrez pas la partition système. Aucune désignation ne lui est attribuée et n'est pas disponible dans l'Explorateur Windows. Pour le voir, vous devez ouvrir la console de gestion de l'ordinateur (commande dans la barre de recherche diskmgmt.msc) dans la section Gestion des disques :

Pourquoi avez-vous besoin d’une partition réservée ?

Cette partition système contient les données de démarrage, le code du gestionnaire de démarrage (un programme qui vous permet de sélectionner la partition de disque active à partir de laquelle Windows démarrera). Il y aura également un environnement de récupération Windows à la suite d'une panne du système. Si vous utilisez la fonctionnalité de chiffrement BitLocker intégrée dans Windows, les données de démarrage de la fonctionnalité BitLocker Drive Encryption s'y trouveront également.

Pour chaque version du système, la taille du disque est également déjà prête. 100 Mo sous Windows 7, 350 Mo sous Windows 8/8.1 et enfin 500 Mo sous Windows 10. Et d'ailleurs, parfois cet espace n'est pas suffisant et l'utilisateur reçoit un message d'erreur après le prochain lot de mises à jour.

Comment consulter la section réservée ?

Si vous souhaitez consulter le contenu de cette section, donnez simplement un nom à la section. Comme toujours, sous la forme d'une lettre latine. Une fois la nouvelle partition apparue dans l'Explorateur Windows, activez l'affichage des dossiers et fichiers cachés, ainsi que des fichiers système. Permettez-moi de vous rappeler que cela se fait via le Panneau de configuration dans l'élément Options des dossiers.

Si vous ne pouvez pas le faire à l'aide de la console Windows, mais que des fichiers tels que BOOTSECT.bak et les dossiers Boot, Recovery, ainsi que les informations sur le volume système, $RECYCLE BIN deviennent visibles sans de telles manipulations, vous n'êtes pas le premier à travailler avec votre disque dur. Sans disque Réservé par le système le chiffrement du disque sera tout simplement impossible à maintenir. Et comme le ransomware est prêt à fonctionner dans toutes les dernières versions de Windows, cette section apparaîtra également toujours.

Il n'y a plus de partition système...

Est-il possible de supprimer une partition réservée ?

Je ne sais pas pourquoi vous pourriez en avoir besoin. Je recommande fortement de ne pas faire cela lorsque Windows fonctionne.. Oui pour n'importe quelle raison. Sinon, vous êtes presque assuré de rencontrer une erreur de chargement. De plus, lorsque vous essayez ensuite de réparer le chargement de Windows alors qu'il refuse de démarrer (si cela se produit, bien sûr), le système vous montrera naturellement un problème sous la forme d'un élément manquant. Dépannage de votre ordinateur. Et vous devrez utiliser Windows.

N'y a-t-il aucun moyen de s'en débarrasser ?

Considérez-y à nouveau : cette section est très utile et peut s'avérer utile. Cependant, si vous pensez qu’il ne fait que gêner, réfléchissez à ceci.

  • Avant d'installer Windows

Tout est simple ici. Si vous ne souhaitez plus voir cette section à l'avenir, utilisez l'utilitaire intégré Partie disque. Il est inclus dans le disque d'installation de Windows.

  • Pendant l'installation du système, appuyez sur Shift + F10, en appelant la console cmd
  • lancement partie disque et vérifiez le nombre de disques physiques avec la commande disque de liste(la numérotation commence à 0)
  • sélectionnez celui dont vous avez besoin avec la commande sélectionner le disque 0
  • et créez un volume prêt à l'emploi avec la commande créer une partition principale

Nous continuons l'installation de Windows en pointant vers ce disque (Windows ne créera pas de partition réservée)

  • La rubrique est déjà présente

Vous ne pouvez pas le supprimer d’un simple clic de souris : le système n’est pas son propre ennemi. Et, avant que le volume ne soit supprimé, tous les fichiers qui y sont stockés doivent être déplacés vers un autre emplacement. Seulement, cela semble si simple : ces manipulations impliquent la modification du registre, la copie de fichiers entre les volumes et la modification du stockage du chargeur de démarrage BCD. Dans les versions à partir de Windows 8, vous devrez également inclure l'environnement de récupération. Si vous le souhaitez, je peux décrire plusieurs techniques, mais je ne recommande tout simplement pas de le faire. De plus, je suis tombé sur certains programmes qui garantissaient qu'avec leur aide, le transfert de données à partir d'un disque de sauvegarde (puis sa suppression) se déroulerait sans problème. Malheureusement, en réalité, il y avait plus de problèmes qu’ils ne l’avaient mentionné. Laissez-le tel quel.

Lire : 20

Menu Modifier(Modifier) ​​du programme Regedt32 contient des commandes qui vous permettent d'ajouter, de modifier et de supprimer des sections et des éléments de registre importants.

Pour ajouter une nouvelle section à n'importe quelle ruche de registre, sélectionnez la commande Ajouter une rubrique Menu (Ajouter une clé) Modifier. Lorsque vous exécutez cette commande, vous êtes invité à saisir le nom de la section et la classe (la classe dans ce cas fait référence au type de données). La boîte de dialogue permettant de saisir ces informations est illustrée à la Fig. 14.5. Il n'existe pas de liste dans laquelle vous pouvez sélectionner un type de données dans cette boîte de dialogue, mais vous avez la possibilité de créer une section et de déterminer le type de données lors de la saisie d'un nouveau paramètre dans le cadre de la section créée.

Équipe Ajouter une rubrique utilisé pour ajouter des éléments significatifs aux clés de registre. La boîte de dialogue qui s'ouvre lors de l'exécution de cette commande (Fig. 14.6) contient une liste qui permet de sélectionner le type de données pour l'élément significatif : valeurs de chaîne (REG_SZ, REG_MULTI_SZ et REG_EXPAND_SZ) ou valeurs binaires (REG_DWORD ou REG_BINARY ).

Pour supprimer une section ou un élément significatif du registre, sélectionnez l'objet (section ou élément significatif) destiné à être supprimé et sélectionnez la commande Supprimer Menu (Supprimer) Modifier. Il vous sera demandé de confirmer votre intention de supprimer la section sélectionnée ou l'élément important.

Note

Comme cela a été répété à plusieurs reprises, les éditeurs de registre ne prennent pas en charge les opérations d'annulation. Ainsi, après avoir confirmé l'opération de suppression, vous n'aurez aucun autre moyen de restaurer les informations supprimées que de les restaurer à partir d'une copie de sauvegarde précédemment créée. De plus, l'Éditeur du Registre vous invite à confirmer l'opération de suppression uniquement si l'option Confirmer la suppression est sélectionnée dans le menu Options. Par conséquent, lorsque vous décidez de supprimer des clés du registre, ne négligez pas la sauvegarde (et ne recherchez pas vous-même des tâches inutiles avec une solution déjà existante).

Si vous supprimez accidentellement quelque chose de la clé de registre HKEY_LOCAL_MACHINE\System\CurrentControlSet, n'oubliez pas que vous pouvez restaurer le contenu de cette clé en utilisant la dernière configuration chargée avec succès (voir chapitres 2 et 8). Pour effectuer cette opération, redémarrez votre ordinateur et immédiatement après l'apparition du menu du chargeur de démarrage, appuyez sur le bouton , puis sélectionnez l'option Dernier bon connu dans le menu de débogage.

En plus des commandes permettant de supprimer des éléments de registre et d'ajouter de nouvelles sections et paramètres à sa composition, dans le menu Modifier L'éditeur Regedt32 dispose d'un ensemble de commandes pour modifier les entrées de registre existantes (et il convient de noter que cet ensemble d'options est beaucoup plus large que celles fournies par le nouveau programme Regedit). Menu Modifier L'éditeur de registre Regedt32 contient des commandes Données binaires(Binaire) Doubler(Chaîne), Double mot(DWORD) et Multiligne(Multichaîne). La sélection de chaque commande lance l'éditeur de valeurs du type correspondant - par exemple, sélectionnez commandes données binaires lance l'éditeur binaire - Binary Editor, sélectionnez la commande Double mot- Éditeur de valeurs DWORD et sélection de commandes Ligne et multiligne appelle les éditeurs correspondants pour les valeurs de chaîne et multilignes. Veuillez noter que des fonctionnalités aussi étendues ne sont tout simplement pas disponibles dans l'éditeur Regedit.

Dans l'immensité du Runet, il est difficile de trouver des informations constructives et bien présentées sur la conception du système d'exploitation Android. Pour la plupart, les informations sont fragmentées et incomplètes ; il n'y a pas de partie introductive avec les concepts de base, ce qui rend difficile la perception et la compréhension des débutants. Sans connaissance de base de l'appareil et de l'algorithme de fonctionnement du système d'exploitation Android, il est impossible de déboguer ou de personnaliser un micrologiciel ou de le développer pour le système d'exploitation Android. C'est ce qui m'a poussé à écrire cet article, dans lequel je vais essayer, dans un langage ordinaire et compréhensible, de transmettre des choses « complexes ».

Le matériel est principalement destiné à l'étude des utilisateurs ordinaires et est présenté comme une excursion d'introduction dans le monde des systèmes d'exploitation Android. Par conséquent, des informations concises et superficielles seront présentées ici sans profondeurs ni nuances techniques. Ce matériel sera utile à tous ceux qui sont impliqués dans le flashage et la personnalisation de micrologiciels, au développement pour le système d'exploitation Android, à la réparation de systèmes informatiques mobiles et à l'utilisateur moyen pour une meilleure compréhension des principes de fonctionnement et des capacités de leur Android.

Partitions de mémoire interne Android

La mémoire interne d'un appareil Android est divisée en plusieurs lecteurs logiques (partitions). Voici une disposition de mémoire classique :

Chargeur de démarrage- voici un programme (bootloader) qui permet de lancer le système d'exploitation Android, le Recovery et d'autres modes de service.

Récupération- comme son nom l'indique, un menu de récupération technique ou simplement Recovery est installé ici.

Botte- le cœur de l'OS Android, voici le noyau, les pilotes et les paramètres de gestion du processeur et de la mémoire.

Système- la partition système, qui contient tous les fichiers nécessaires au fonctionnement de l'OS Android, c'est comme le dossier Windows sur votre lecteur C:\ (ci-après nous l'associerons à l'OS Windows)

Données- une section pour installer les applications et stocker leurs données. (Fichiers de programme)

Utilisateur- il s'agit d'une carte SD bien connue ou, plus simplement, d'un emplacement pour les fichiers utilisateur (Mes documents). Ici nous sommes obligés de faire une digression, car le placement de cette section a plusieurs options :

  • La partition ne se trouve pas dans la mémoire interne, mais à la place, un lecteur externe est utilisé - l'option la plus populaire. (Fig. 1)
  • Sur les appareils dotés d'une grande mémoire intégrée, cette section est considérée comme une carte SD et la carte mémoire externe est considérée comme une carte SD2 ou extsd (il peut y avoir d'autres options de nom). Généralement trouvé sur les appareils exécutant Android 3.2. (Fig.2 Option 1)
  • Cette option a remplacé la version précédente, ainsi qu'Android 4.0. La section Utilisateur a été remplacée par un dossier multimédia dans la section Données, ce qui nous a permis d'utiliser toute la mémoire disponible pour l'utilisateur pour installer des programmes et stocker des données, et non la quantité que le fabricant nous a allouée. En d’autres termes, la carte SD et les données ne font qu’un. (Fig.2 Option 2)

Maintenant que nous savons ce qui se trouve où, voyons pourquoi il se trouve là et comment ces informations peuvent nous être utiles.

Commençons par Bootloader. C'est le bootloader qui lance Android, la récupération, etc. Lorsque nous appuyons sur le bouton d'alimentation, le chargeur de démarrage démarre et, s'il n'y a pas de commandes supplémentaires (touches enfoncées), commence le chargement du démarrage. Si une combinaison de touches a été appuyée (chaque appareil a la sienne), alors elle se lance, selon la commande, recovery, fastboot ou apx. La figure ci-dessous montre clairement ce que Bootloader exécute et comment les sections sont interconnectées.

Comme le montre la figure 3, la partition de récupération n'affecte pas le chargement du système d'exploitation Android, mais pourquoi est-elle alors nécessaire ? Essayons de le comprendre.

Recovery est essentiellement un petit utilitaire basé sur le noyau Linux et chargé indépendamment d'Android. Sa fonctionnalité standard n'est pas riche : vous pouvez réinitialiser l'appareil aux paramètres d'usine ou mettre à jour le firmware (pré-téléchargé sur la carte SD). Mais, grâce aux artisans, nous avons modifié la récupération, grâce à laquelle vous pouvez installer un firmware modifié (personnalisé), configurer Android, créer des sauvegardes et bien plus encore. La présence ou l'absence de recovery, ainsi que sa version, n'affectent pas les performances de l'OS Android (une question très courante sur les forums).

Les lecteurs particulièrement attentifs auront peut-être remarqué un certain Fastboot sur la figure 3. Il s'agit d'une interface permettant de travailler directement avec les partitions de mémoire interne à l'aide de la ligne de commande. Grâce à lui, vous pouvez flasher la récupération, la version du noyau ou du nouveau firmware, ou formater (supprimer toutes les informations) l'une ou l'autre partition.

Puisque nous parlons d'interfaces, je veux parler d'une autre assez connue - adb (android debugbridge). Il s'agit du mode dit de débogage, et il est ainsi nommé pour une raison : grâce à lui, vous pouvez surveiller le fonctionnement du système dans son ensemble et des applications individuelles. Mais ce n'est pas tout, avec adb, vous pouvez obtenir un accès complet au système de fichiers de l'appareil et modifier les fichiers système, ou récupérer des informations importantes lorsque le chargement de votre appareil est bloqué. Je ne décrirai pas toutes les fonctions du mode débogage car... mon objectif est de transmettre des informations générales, et non un aperçu détaillé des fonctions d'un mode particulier.

Après avoir compris la théorie, lançons le système d'exploitation Android.

Nous appuyons sur le bouton d'alimentation - Bootloader est lancé, qui charge le noyau (démarrage), qui, à son tour, démarre le système (Système), eh bien, et il charge déjà les programmes (données) et l'espace utilisateur (utilisateur). (Fig.3)

Passons maintenant au répertoire racine et examinons l'intérieur du système d'exploitation Android lui-même :

Dans ce diagramme, nous avons fourni uniquement les répertoires nécessaires à titre de référence. En fait, il y en a beaucoup plus, et l’examen d’un seul dossier Système nécessiterait un article entier.

Et donc, le dossier de données. Comme son nom l’indique, cela a quelque chose à voir avec les données, mais de quel type ? Oui, pour presque tout le monde, cela inclut la synchronisation et les données de compte, les mots de passe des points d'accès wifi et les paramètres VPN, etc. Entre autres choses, vous pouvez trouver ici les dossiers app, data et dalvik-cache - regardons leur objectif :

  • app - les programmes et les jeux sont installés ici.
  • données - les données de l'application, leurs paramètres, les sauvegardes de jeu et d'autres informations sont stockées ici.
  • dalvik-cache est une zone de cache logiciel pour le programme Dalvik. Dalvik est une machine virtuelle Java, qui sert de base à l'exécution de programmes portant l'extension *.apk.
  • Afin d'accélérer le lancement des programmes, leur cache est créé.

Le dossier Système stocke les données système et tout ce qui est nécessaire au fonctionnement du système d'exploitation. Examinons certains de ces dossiers :

  • application - voici les applications système (SMS, téléphone, calendrier, paramètres, etc.), ainsi que les applications installées par le fabricant de l'appareil (widgets de marque, fonds d'écran animés, etc.).
  • polices - polices système
  • médias - contient des sonneries standard, des notifications, des alarmes et des sons d'interface, ainsi qu'une animation de démarrage (bootanimation)
  • build.prop - Ce fichier est presque le premier mentionné dans les conversations et les articles sur le réglage fin du système. Il contient un grand nombre de paramètres, tels que la densité de l'écran, le délai du capteur de proximité, le contrôle Wi-Fi, le nom et le fabricant de l'appareil, ainsi que de nombreux autres paramètres.

Droits de superutilisateur root dans le système d'exploitation Android

Comme dans tout système de type Linux, dans le système d'exploitation Android, l'accès aux fichiers et répertoires système est fourni avec les droits de superutilisateur Root. Dans cette section, nous avons décidé d'examiner le principe de fonctionnement des droits de superutilisateur dans le système d'exploitation Android, la possibilité de modifier des fichiers système ou des partitions logiques de l'espace fichier si vous disposez des droits de superutilisateur Root.

— Savoir ce qu'il y a dans quel dossier est une bonne chose, mais est-il possible de faire quelque chose ?

- Oui! Mais vous avez besoin de droits de superutilisateur (root) ou, si nous faisons une analogie avec Windows, de droits d'administrateur. Initialement, tous les appareils Android sont livrés sans droits root pour l'utilisateur final, c'est-à-dire Lorsque nous achetons un appareil, nous n’en sommes pas propriétaires à part entière. Ceci est fait à la fois pour se protéger contre les logiciels malveillants et contre l'utilisateur lui-même - après tout, entre des mains incompétentes, un accès complet au système peut entraîner la « mort » du système d'exploitation et la nécessité ultérieure de flasher l'appareil.

"Eh bien, à quoi sert une chose aussi dangereuse ?"- tu demandes.

Maintenant, nous allons vous dire :

  • La possibilité de sauvegarder les données et de les restaurer après un flashage ou une suppression accidentelle.
  • Affiner le système manuellement ou à l'aide de programmes spéciaux.
  • Suppression d'applications système, de sonneries, de fonds d'écran, etc.
  • Modification de l'apparence du système d'exploitation (par exemple, affichage de la charge de la batterie en pourcentage)
  • Ajout de fonctionnalités (support des réseaux ad hoc par exemple)

Cette liste peut être poursuivie pendant longtemps, mais je pense que ces exemples suffiront à se faire une idée des capacités et de l'étendue de l'application des privilèges root.

- Tout cela est bien, mais désormais n'importe quel programme pourra accéder au « cœur » du système d'exploitation et à mes données ?

- Non. Vous décidez si vous autorisez ou non telle ou telle application à obtenir un accès root. Pour cela, il existe un programme appelé Superuser ou sa sœur avancée SuperSU. Sans ce programme ou un programme similaire, il n'est pas possible d'utiliser root.

Comme vous pouvez le constater, Android n’est pas un système d’exploitation si difficile à comprendre pour l’utilisateur. Si vous avez une expérience antérieure avec les systèmes d'exploitation de type Linux, vous trouverez de nombreuses similitudes avec les systèmes Android, et ces similitudes sont justifiées. Le système Android est dérivé et construit sur le noyau Linux. J'espère qu'après avoir lu l'article, vous avez appris quelque chose de nouveau ou reçu une réponse à une question qui vous intéresse depuis longtemps.

Bonjour Habr!

Il y a plusieurs années, lorsque j'ai découvert Android pour la première fois, un collègue de travail m'a dit qu'Android offrait la possibilité d'installer un micrologiciel modifié ou fait maison. Franchement, j'en étais alors loin. Et il y a encore six mois, je m'intéressais à peine à de telles choses. Au fond de mon cœur, j'en étais sûr : ce que fait le fabricant est déjà destiné à un usage normal.

Imaginez ma déception lorsque j'ai acheté un téléphone en Chine, où les paramètres d'usine interdisaient l'utilisation de Google, Skype, Facebook et d'autres applications. En principe, il était possible de fermer les yeux sur certaines choses, mais lorsque mon téléphone ne nécessitait pas l'utilisation d'un compte Google, j'ai promis de le comprendre définitivement, quoi qu'il m'arrive.

Six mois se sont écoulés et mon firmware personnalisé est utilisé avec succès partout dans le monde.

Cette série d'articles expliquera comment effectuer une programmation inversée pour Android, implémenter des correctifs, des ajustements et des mods.

Préambule

Donc! Définissons d'abord les concepts qui seront utilisés dans donné article. Cependant, votre compréhension habituelle peut être très différente.

Correctif- changer ou remplacer le code du programme existant afin de modifier l'algorithme du programme.
Maud- en règle générale, ajouter des fonctionnalités supplémentaires au code du programme existant sans modifier l'algorithme.
tordre- amélioration de la fonctionnalité du programme afin de faciliter l'accès aux paramètres du système.

Je tiens également à noter que tous les exemples seront pris pour un téléphone HTC, mais cela ne signifie pas que ces informations ne peuvent pas être utilisées sur d'autres téléphones.

Préparer l'environnement

Je peux me passer d'instructions détaillées sur la façon d'utiliser tel ou tel logiciel. Si cet article vous intéresse et que vous avez lu jusqu'ici, j'espère que vous êtes déjà un utilisateur expérimenté et que vous avez de l'expérience dans l'utilisation, ou du moins dans l'expérimentation, de ce domaine. Il existe de nombreuses instructions, articles et résultats de tests dans le domaine public, tout comme sur Habré. Je me passerai également de décrire certains termes, sinon l'article s'avérera très long et fastidieux. Nous n'écrirons qu'au point. Je suis sûr que vous êtes mercredi depuis longtemps. Sinon, je suggère de le télécharger et de l'installer.

1 . SDK Android. Il s'agit d'un environnement de développement d'applications pour Android. Afin d'apporter des modifications, nous devrons certainement vérifier notre code de programme. L’environnement de développement est le meilleur que nous puissions utiliser.
2 . Cuisine Android. Cet utilitaire vous permettra de travailler avec des images de partitions système de firmware officiel ou non officiel.
3 . JD-GUI. Décompilateur de code Java. Je tiens tout de suite à souligner qu'il s'agit du meilleur décompilateur en termes de facilité d'utilisation.
4 . Décompilateur DJ Java. Un autre décompilateur, ou désassembleur, comme certains aiment l'appeler, du code des programmes en langage Java. Ce n'est pas pratique à utiliser, mais il analyse le code que JD-GUI ne comprend parfois pas.
5 . petit. Un autre désassembleur, mais cette fois du code Dalvik. smali est nécessaire pour le démontage et backsmali est nécessaire pour assembler le code.
6 . dex2jar. Un utilitaire pour convertir les fichiers exécutables du code Dalvik.

Conversion du micrologiciel

Bien entendu, le firmware fourni par le fabricant sur votre téléphone est optimisé pour réduire la consommation d’énergie. Pour que le firmware puisse être modifié, il doit être converti dans un format permettant de modifier le code. Android Kitchen est utilisé pour cela. Bien sûr, vous pouvez le faire avec vos mains, comme je le faisais auparavant jusqu'à ce que je trouve cette très « cuisine ». Vous pouvez lire sur Internet comment supprimer la zone système du téléphone, installer l'environnement et créer le micrologiciel DEODEX. Si vous ne comprenez déjà rien, je pense que cela vaut la peine de ne pas lire cet article jusqu'à ce que vous ayez suffisamment d'expérience.

Une fois que le micrologiciel est passé d'une version optimisée (ODEX - code exécutable Dalvik optimisé, si ma mémoire est bonne) à DEODEX (c'est-à-dire NON optimisé), tous les fichiers exécutables sont prêts à être modifiés.

Modifications directes

Création de correctifs
Comme je l'ai déjà dit, mon téléphone n'avait initialement pas accès à Google. Quoi qu’il en soit, vous ne pouvez pas accéder au Playstore, vous ne pouvez pas créer de compte, le répertoire téléphonique ne se synchronise pas vraiment. Pourquoi avez-vous besoin d'un tel Android ? Après avoir longuement fouillé dans le logcat de l'appareil lui-même, j'ai trouvé des entrées indiquant que l'utilisation de Google est interdite. La chose la plus gênante avec Android est que vous voyez le journal, mais vous ne savez pas quelle application système le produit. Pour savoir d'où venaient mes jambes, j'ai dû vider toutes les applications système du code Java désassemblé. Cela a pris beaucoup de temps, mais j'utilise toujours le travail que j'ai fait pour analyser et trouver le bon code. Les étapes pour obtenir de tels outils sont les suivantes :
1 . Faire DEODEX de tous les firmwares
2 . Votre nouveau firmware DEODEX devra être assemblé et flashé sur votre téléphone. La manière dont cela se fait fait l’objet d’un autre article.
3 . À partir de chaque fichier situé dans /system/framework, extrayez le fichier classes.dex et convertissez-le en JAR à l'aide de dex2jar.
4 . Ouvrez chaque JAR résultant dans JD-GUI et réenregistrez-le dans le code source
5 . Décompressez le code source de l'archive.

En fin de compte, je me suis retrouvé avec autant de dossiers qu'il y avait de fichiers JAR dans /system/framework, et chaque dossier avait une structure de code source Java.
Grâce à des manipulations simples, j'ai rapidement trouvé l'endroit qui générait les entrées dans logcat.

Nous n'examinerons pas toute la logique de l'interdiction, puisque chaque cas est une histoire à part. J'ai dû passer quelques heures avant de trouver où les contrôles étaient effectués, de construire un schéma fonctionnel de l'algorithme dans ma tête et de comprendre où aller pour « gâcher » un peu l'algorithme.

Cela s'est avéré simple. Il existe un sous-programme qui, sur la base de constantes préétablies, répond, lorsqu'il est contacté, si le téléphone appartient à la Chine ou non.

Le code était dans le fichier HTCExtension.jar, et la classe qui contenait ce sous-programme était dans

Déballage et analyse du fichier original
1 . Tout d’abord, nous devons prendre le fichier DEODEX JAR original, qui est responsable de la partie du code dont nous avons besoin. Dans notre cas HTCExtension.jar.
2 . Ouvrez avec n'importe quel archiveur et extrayez classes.dex à partir de là
3 . Utilisez le convertisseur dex2jar pour le convertir en fichier JAR. Commande : dex2jar.bat classes.dex
4 . Ouvrez le fichier classes_dex2jar.jar résultant dans JD-GUI.
5 . Oui, le plus souvent, JD-GUI décompile le code non pas tel qu'il apparaît dans l'original, c'est compréhensible, mais il est tout à fait lisible. Dans le code source, nous voyons que le sous-programme vérifie les paramètres du projet et l'indicateur de langue du firmware. Dans notre malheureux cas, TRUE est renvoyé.
public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) renvoie vrai ; renvoie faux ; )
6 . Pour créer un patch, nous devons démonter le code Dalvik lui-même. Pour cela, nous utilisons du baksmali. Le moyen le plus pratique consiste à créer un dossier séparé et à y regrouper trois fichiers : HTCExtension.jar, smali.jar Et baksmali.jar. Donnez la commande java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

Il s'agit de l'API de votre version d'Android. Pour JB, il est 16 heures
- le dossier où se trouvent tous les frameworks du firmware.

Dans mon cas c'était la commande
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . Dans notre dossier nouvellement créé, le dossier HTCExtension est apparu, ainsi que nos fichiers avec le code Dalvik.
8 . Trouver le fichier le long du chemin \com\htc\util\contacts\BuildUtils$Customization.java et regarde le code :
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xd8 if-eq v1 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;-> Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end méthode
9 . Effrayant, n'est-ce pas ? Rien n'est clair. Mais c'est un problème réparable. Après avoir créé plusieurs de vos propres correctifs et ainsi acquis de l'expérience, vous pouvez facilement modifier le code sans outils tiers. Dans notre cas, dans ce code
.prologue const/4 v0, 0x1 attribue à la variable v0 la valeur 1, c'est-à-dire VRAI. Ensuite, il y a toutes sortes de contrôles, et si le téléphone n'est pas chinois, alors la valeur de la variable change :
.line 297 const/4 v0, 0x0 goto:goto_13
10 . Le moyen le plus simple de sauver le père de la démocratie russe est de modifier le code comme suit :
.prologue const/4 v0, 0x0 , c'est-à-dire changer la valeur de la variable de 1 à 0. Autrement dit, quoi qu'il arrive, la valeur FALSE serait toujours renvoyée et dans l'interface graphique JD, le code ressemblerait à public static booléen isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) renvoie faux ; renvoie faux ; )
11 . Oui, la méthode fonctionnera. Mais nous ne cherchons pas de solutions faciles – cette fois-ci. Deuxièmement, ce n’est pas vraiment beau. Je voudrais coder quelque chose comme
public static boolean isChina() ( return false; )
12 . Comment pouvons-nous obtenir le code Dalvik pour ce code source ? Pour les débutants, nous ferons un petit tour.

Création du code Dalvik
1 . Ouvrez le SDK Android.
2 . Nous créons un nouveau projet et écrivons le code suivant dans notre seule classe de test
paquet ru.habrahabr.test; test de classe publique ( public static boolean isChina() ( return false; ) )
3 . Nous compilons notre projet puis récupérons l'application assemblée de l'espace de travail.
4 . Nous plaçons l'application assemblée dans le dossier où nous avons vidé le fichier JAR.
5 . Donnez la commande java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6 . Nous avons désassemblé l'application nouvellement construite en code Dalvik.
7 . Ouvrez notre fichier test.smali et voyez le code ici
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end méthode
8 . Ça y est, le code du patch est prêt.
Rouler un patch
1 . Le code Dalvik est jonché de marqueurs indiquant une ligne de code dans le fichier source d'origine. Ceci est nécessaire lors de l'affichage des erreurs, le cas échéant, dans votre programme. Le code fonctionne également très bien sans spécifier de lignes.
2 . Nous supprimons les lignes avec la numérotation des lignes, copions et remplaçons la méthode (sous-programme) dans notre \com\htc\util\contacts\BuildUtils$Customization.java déposer.
.method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end méthode
3 . Enregistrez le fichier. Oui, j'ai oublié de dire que vous avez besoin d'un éditeur normal, par exemple Notepad++ ou EditPlus. Qui aime lequel ?
Compilation et construction d'un fichier JAR corrigé
1 . En utilisant backsmali, nous avons vidé notre fichier JAR et nous devons maintenant le reconstituer.
2 . Donnez la commande java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . Le fichier classes.dex apparaît dans notre dossier
4 . Réouverture HTCExtension.jar fichier avec un archiveur et remplacez celui qui existe déjà classes.dexà celui qui vient d'être créé.
5 . C'est ça, le nôtre HTCExtension.jar contient du code de programme modifié.
Remplacement du fichier d'origine par un fichier corrigé
Habituellement, des scripts spéciaux sont créés pour les utilisateurs ordinaires, qui sont remplacés via la récupération. Mais cela ne nous intéresse pas. Premièrement, c’est long et fastidieux, et deuxièmement, nous sommes des utilisateurs expérimentés et pouvons nous permettre quelques subtilités.

1 . Vous pouvez remplacer le fichier de travail actuel par les commandes suivantes si vous disposez déjà du firmware DEODEX et disposez d'un accès root :

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar de=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email protégé]@classes.dex redémarrage

La première commande télécharge le fichier corrigé sur le lecteur flash
La 2ème commande ouvre le shell
La 3ème commande donne un accès root
La 4ème commande monte le système en mode lecture/écriture
La 5ème commande fait une copie de sauvegarde du fichier
La 6ème commande écrase le fichier existant par le nouveau fichier corrigé.
La 7ème commande configure les autorisations
La 8ème commande supprime le cache
La 9ème commande redémarre l'appareil.

2 . Merci d'avoir lu jusqu'ici, il en reste peu.
3 . Après un redémarrage, votre nouveau code corrigé prendra effet.
4 . Si le code ne fonctionne pas ou si une erreur se produit, à l'aide de combinaisons simples, vous pouvez renvoyer la copie de sauvegarde.
adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email protégé]@classes.dex redémarrage

Épilogue

Oui, certains ont trouvé cet article trop précis, certains l’ont trouvé difficile à comprendre et certains l’ont trouvé inutile. J'ai délibérément évité les détails approfondis et les illustrations de ce à quoi tout cela ressemble en direct et en pratique. Premièrement, ce travail sera ingrat et ne fera que susciter encore plus de questions. Deuxièmement, je ne veux pas voir une armée d’utilisateurs sur les forums se plaindre d’avoir tué leur téléphone.

Pour le prochain article, je vais vous expliquer comment réaliser des Tweeks. Il y aura un exemple d'utilisation de l'enregistrement automatique des appels téléphoniques à l'aide d'outils téléphoniques natifs. Merci pour votre attention.

P.S. Si quelque chose n'est pas clair ou prête à confusion, posez des questions - je serai toujours heureux de répondre et de vous expliquer.

Formulation du problème

Le stockage d'informations sur un ordinateur est associé au risque de divulgation accidentelle ou intentionnelle, c'est pourquoi diverses méthodes et moyens sont utilisés pour les protéger. Le plus souvent, comme principal moyen empêchant le libre accès à l'information sous forme électronique, utiliser le cryptage, qui est implémenté dans le matériel ou le logiciel. Les objets de la protection cryptographique sont des fichiers individuels, des groupes de fichiers, des répertoires et enfin des lecteurs logiques. Le résultat du cryptage est des archives de fichiers situées sur medias ELECTRONIQUES. Détails de la mise en œuvre de divers algorithmes cryptographiques, on peut noter que dans ce cas, le GKU doit également résoudre des problèmes liés à la destruction garantie de l'original informations non cryptées pour empêcher sa récupération.

Le fait est qu'une caractéristique de tous les systèmes de fichiers utilisés ( FAT, NTFS, etc.). Il n'est pas possible d'écraser les informations dans les clusters appartenant à un fichier jusqu'à ce que le fichier soit remarqué comme supprimé. Autrement dit, lors du cryptage du fichier, sa copie cryptée n'est pas écrite à la place du fichier initial, mais dans des grappes libres du support électronique, et seulement une fois le processus de cryptage terminé, le fichier non crypté est supprimé, sauf si cela est prévu par le algorithme.

Ainsi, il est possible de récupérer des informations supprimées non cryptées, ce qui est réalisé avec succès par des produits logiciels tels que Récupération de fichiers, Back2Life, R-Studio, GetDataBack pour NTFS, etc.

Si vous ne tenez pas compte des recommandations qui leur sont associées destruction physique des supports électroniques, cela ne peut alors être rendu impossible qu'en réécrivant de manière répétée les groupes de disques magnétiques où les informations confidentielles étaient précédemment stockées. Par exemple, Norme nationale américaine du ministère de la Défense DOD 5220.22-M (E) implique l'enregistrement de nombres aléatoires lors du premier passage, de nombres supplémentaires à ceux enregistrés lors du passage précédent lors du deuxième et de nombres aléatoires lors du troisième. Dans le célèbre algorithme de Peter Gutmann, considéré comme l'un des le plus fiable , à la place des données détruites, toutes les combinaisons connues de chiffres sont écrites tour à tour (un total de 35 passes sont effectuées). — les méthodes de destruction d'informations sont conformes aux normes américaines DOD 5220.22-M, AR380-19 de l'armée, NCSC-TG-025, Force aérienne 5020, NAVSO P-5239-26, HMG IS5, VSITR allemand, OPS-II canadien et GOST P50739-95 russe, etc. Ainsi, chiffrement effectué à l'intérieur du disque logique, comporte toujours le risque d’une destruction incomplète des informations originales, une approche différente de ce problème est donc nécessaire.

mob_info