Un didacticiel concernant
l'utilisation d'un éditeur hexadécimal.
Dernière mise à jour : 15/08/2005
- Installer un éditeur
hexadécimal : "Frhed"
Vous pouvez télécharger "Frhed" à
partir de cette adresse : www.rs.e-technik.tu-darmstadt.de/applets/frhed-v1.1.zip.
1) Décompressez l'archive ZIP nommée frhed-v1.1.zip
dans le répertoire de votre choix.
2) Double-cliquez sur un fichier nommé frhed-v1.1.exe afin
de lancer l'installation du programme.
Un éditeur hexadécimal permet d'éditer les
fichiers binaires afin de modifier les valeurs qui sont contenues.
Cela vous permet de modifier certaines informations présentes
dans un fichier système afin de, par exemple, personnaliser
une boîte de dialogue ou d'insérer vos propres fichiers
images dans un fichier exécutable. Définition
: Un fichier binaire est un fichier qui n'est pas du texte
(fichier exécutable, fichier image, etc.). Un fichier ASCII
est un fichier qui est du texte (documents web, fichiers créés
avec Word, etc.).
Bits est l'abréviation de "BInary digiT" ("chiffre
binaire"). C'est une unité de mesure en informatique
désignant la quantité élémentaire d'information
représentée par un chiffre binaire. Un bit peut prendre
deux états : 0 ou 1. Nous pouvons le traduit par "Ouvert"
ou "Fermé" ou encore "Vrai" ou "Faux".
C'est ce que nous appelons le système binaire. Afin de vous
entraîner à opérer des conversions entre ce
dernier et le système décimal suivez cette procédure
:
1) Cliquez sur Démarrer/Exécuter puis saisissez :
calc
2) Inscrivez par exemple ceci comme nombre : 666
3) Cochez le bouton radio Bin
L'équivalent en base binaire du nombre 666 est donc celui-ci
: 10 1001 1010. À partir du moment où on doit
représenter des nombres important, les chaînes de 0
et de 1 deviennent rapidement complètement illisibles. C'est
pour cette raison que le système hexadécimal a été
utilisé afin de pouvoir coder des nombres importants avec
le minimum de caractères. Vous pouvez donc obtenir sa représentation
hexadécimale en cliquant sur le bouton radio Hex. Définition
: Le système hexadécimal est un système
de base 16 qui utilise les 10 premiers chiffres (de 0 à 9)
puis les 6 premières lettres de l'alphabet pour représenter
un chiffre ou un nombre : a est égale à 10, b est
égal à 11, etc.
Quand donc vous saisissez quelques lignes dans un nouveau document
vous ne faites qu'aligner des bits qui représenteront chacun
un caractère, un signe ou un symbole spécifique. Cela
signifie par exemple que votre machine stocke la lettre A comme
un nombre possédant la valeur 97 ("61" en notation
hexadécimale).
Avec un paquet de quatre bits ("Nibble" ou "Quadbit")
vous pouvez décrire un nombre allant de 0 à 15. Un
paquet de 8 bits est appelé un octet. Chaque octet peut décrire
un nombre allant de 0 à 255. Information :
Pourquoi seulement entre 0 et 255 ? Nous avons vu qu'un octet se
compose de 8 bits : La valeur minimale est de "00000000"
et la valeur maximale est égale à "11111111".
Si nous faisons la conversion en base décimale cela donne
ces deux valeurs : 0 et 255.
Nous numérotons les bits de la droite vers la gauche, et
ce, en partant de 0. Le bit 0 est couramment appelé bit de
poids faible, le bit le plus à gauche est, quant à
lui, appelé bit de poids fort.
Un fichier est donc une liste de bits dans lequel chacun est désigné
par un index ou, plus communément, un "offset".
Quand vous ouvrez un fichier binaire avec "Frhed", ces
bits sont listés au centre de la fenêtre et sont représentés
en utilisant la notation hexadécimale.
Le numéro d'offset est représenté dans "Frhed"
par la colonne de gauche. Chaque ligne verticale sépare les
différentes valeurs tous les quatre octets. La colonne de
droite contient une représentation textuelle lisible des
octets correspondants. Les octets dont le code est supérieur
à 128 sont représentés par un accent circonflexe,
les octets dont le code est inférieur à 32 sont représentés
par un accent circonflexe renversé. Les octets dont le code
est entre 33 et 127 sont représentés par le caractère
ASCII correspondant, les espaces sont représentés
par un point. Définition : Nous utilisons
deux nombres pour trouver l'adresse d'un octet. Le premier est appelé
adresse de segment, le second adresse d'offset. La mémoire
étant découpée en segments de 64 Ko, nous pouvons
accéder à un de ces blocs mémoire grâce
à l'adresse de segment qui sera codée sur 16 bits
(soit 4 chiffres hexadécimaux). Afin de désigner un
des octets présents dans un segment, nous indiquerons le
décalage de cet octet par rapport au début du segment.
Ce décalage est appelé "Offset". Par exemple,
le troisième élément d'un tableau sera toujours
à l'offset 2 quels que soient les éléments
du tableau.
Si vous sélectionnez une donnée son numéro
d'offset sera automatiquement indiqué en bas à gauche
de la fenêtre.
- Décrypter un
fichier binaire :
Nous ouvrons un fichier de cette façon :
1) Cliquez sur File/Open…
2) Sélectionnez le fichier de votre choix puis cliquez
sur Ouvrir.
3) Une fois les modifications effectuées, cliquez sur File/Save
ou Save as…
Si vous avez un message d'erreur vous signalant que le fichier
n'a pas pu être enregistré suivez cette procédure
:
1) Avec le bouton droit de la souris cliquez sur le fichier puis
sur Propriétés.
2) Décochez la case Lecture seule.
Vous annuler une modification en cliquant sur File/Revert.
Le menu File/Export as hexdump est utile si vous souhaitez exporter
le fichier sous la forme de texte. Un "hexdump" consiste
à afficher les fichiers au format ASCII, décimal
ou hexadécimal.
En bas à droite de la fenêtre et quand vous sélectionnez
un seul octet une information de ce type apparaît : Unsigned:
B:35,W:16931,L:1395933731
* B: représente la valeur de l'octet.
* W: ou L: représente la valeur du mot ou du double-mot
commençant à l'offset exprimé en notation
décimale.
Définition : Nous appelons un Mot un paquet
de plusieurs octets. Un mot est codé sur 16 bits alors
qu'un double-mot est codé sur 32 bits (soit 4 octets).
La section suivante indique le type de caractère : ANSI
ou OEM. Juste à côté est indiqué le
mode d'édition :
* OVR pour écriture : cela vous permet de modifier des
données et d'écraser les données précédentes
sans modifier la taille du fichier.
* INS pour insertion : cela vous permet d'insérer des données
(et donc la taille du fichier sera modifiée).
* READ pour lecture seule : il ne vous sera pas permis de modifier
les données présentes. Si vous essayez vous obtiendrez
ce message d'erreur : "Can't change file because read-only
mode is engaged!".
Note : Pourquoi est-il important de ne pas changer
la taille du fichier ?
Quand vous supprimez des octets, vous déplacez certaines
données (généralement placées en fin
de fichier). Certaines lignes de code n'étant plus trouvées
aux emplacements définis par l'index votre fichier sera
inutilisable.
Enfin, l'indication du mode binaire utilisé est mentionné
: L pour Little-endian ou B pour Big-endian.
Définition : Une donnée binaire
désigne soit une adresse soit des données composées
d'une multitude de 0 ou/et de 1. Le terme "Big-endian"
décrit la façon dont sont classé les nombres
dans plusieurs octets : l'octet de poids fort est stocké
avant l'octet de poids faible. Dans le cas d'un "Little endian",
l'octet de poids faible est stocké avant l'octet de poids
fort. Dans un octet, le bit de poids faible est le bit le plus
à droite. C'est donc la partie la moins significative d'un
nombre.
Vous pouvez à tout moment changer ces options en cliquant
dessus. À l'extrême droite est indiqué la
taille du fichier sur lequel nous travaillons.
- Se déplacer
dans un fichier :
Vous pouvez sélectionner un offset particulier en cliquant
sur Edit/Go to… Dans la zone de texte Go to offset: saisissez
simplement le numéro d'offset.
Afin de lancer une recherche cliquez sur Edit/Find… puis
dans la zone de texte Find What:, saisissez la chaîne de
caractères voulue.
La case à cocher Match case vous permet de spécifier
que la recherche suppose le respect de la casse. Les boutons radio
Up et Down lancent une recherche vers le haut ou le bas.
Une fois une occurrence trouvée servez-vous du menu contextuel
et de la commande Find next (touche F3) afin de trouver l'occurrence
suivante.
- Effectuer une recherche
spéciale :
Vous pouvez lancer une recherche sur certaines valeurs binaires
présentes dans un fichier. Les octets, mot, double-mot peuvent
être codés de cette façon : <{Taille}{système
numérique}:{Valeur}>
Taille : b pour un octet de 8 bits, w pour un mot de 16 bits et
l pour un double-mot de 32 bits.
Système numérique : f pour spécifier le système
décimal ou h pour le système hexadécimal.
Prenons un exemple :
L'expression <bh:f7> spécifiera de rechercher un octet
("b") possédant cette représentation hexadécimale
("h") : 0xf7.
- Éditer un fichier :Voici
les commandes les plus courantes :
* Edit/Cut ou Copy : permet de couper ou de copier un ou plusieurs
octets.
* Edit/Delete : permet de supprimer un ou plusieurs octets.
* Edit/Paste : permet de coller un ou plusieurs octets.
* Edit/Paste with dialogue : c'est la même commande que précédemment
sauf qu'une boîte de dialogue s'ouvre. Il vous est possible
de spécifier le nombre de fois que le groupe d'octets copiés
sera collé.
* Edit/Append : permet d'ajouter une valeur nulle en fin de fichier.
* Edit/Select block command : permet de sélectionner un bloc
de données particulier.
- Modifier un fichier binaire :Imaginons
un exemple simple : nous vous changer le texte de l'info-bulle quand
on survole à l'aide de la souris le bouton démarrer
("Cliquer ici pour commencer").
1) Copiez le fichier explorer.exe de \Windows vers \Temp.
2) À l'aide de "Frhed", ouvrez le fichier explorer.exe.
3) Cliquez sur File/Find.
4) Dans la zone de texte, saisissez : cliquez ici
5) Cochez la case Unicode puis cliquez sur OK.
6) Sélectionnez chaque lettre qui compose le mot commencer
et remplacez-les par celles-ci : démarrer
Nous voyons alors que nous avons une différence dans le nombre
de lettres et qu'il nous en reste une en souffrance. Rappelez-vous
que la taille du fichier ne doit pas être modifiée
sinon vous obtiendrez ce type d'erreur "Explorer.exe n'est
pas une application Win32 valide !". En bref, vous n'aurez
fait que endommager le fichier exécutable. En conséquence
la lettre r doit être remplacée par un caractère
nul.
7) Dans la partie centrale, sélectionnez les deux chiffres
qui composent l'octet formant la lettre r puis remplacez-les par
deux zéros.
8) Sauvegardez les changements. Astuce : Supprimer
complètement l'info-bulle du menu démarrer : Il vous
suffit dans ce cas de remplacer l'intégralité des
valeurs hexadécimales composant le texte par des 00.
Si vous désiriez conserver les changements il vous faudrait
remplacer la version modifiée du fichier explorer.exe par
votre propre version mais nous allons voir qu'il existe dans ce
cas une méthode plus simple vous permettant de tester les
modifications.
9) Appuyez simultanément sur les touches Ctrl + Alt + Suppr
afin d'accéder au gestionnaire de tâches.
10) Cliquez sur l'onglet Processus.
11) Sélectionnez un processus nommé explorer.exe puis
cliquez sur le bouton Terminer le processus.
Votre Bureau Windows sera complètement vide !
12) Cliquez sur Fichier/Nouvelle tâche (Exécuter…)
13) Cliquez sur le bouton Parcourir… puis sélectionnez
le fichier explorer.exe situé dans \Temp.
14) Validez par OK.
Nous avons remplacé le "Shell" par défaut
par l'autre version stockée dans \Temp. Il ne vous reste
plus qu'à procéder à un test. Définition
: Le "Shell" désigne la coquille qui sert
de réceptacle au système d'exploitation. Sous Windows
XP, c'est le fichier Explorer.exe qui détermine l'apparence
de votre environnement.
Afin de revenir au "Shell" précédent, terminez
de la même façon que précédemment le
processus explorer.exe puis relancez-le mais en sélectionnant
cette fois-ci la bonne version. Il vous suffit dans ce cas de le
sélectionner dans la liste déroulante Ouvrir:
Pour les lecteurs curieux signalons une manière de rendre
définitifs les modifications que vous avez apportées
au "Shell" car dans ce cas nous devons déjouer
le mécanisme de protection des fichiers propre à Windows
XP.
1) Faites une copie de sauvegarde du fichier explorer.exe que vous
placerez dans un répertoire "sûr".
2) Dans l'Explorateur Windows ouvrez ce répertoire : \Windows\system32\Restore.
3) Avec le bouton droit de la souris cliquez sur le fichier filelist.xml
puis sur la commande Propriétés.
4) Décochez la case Lecture seule puis cliquez sur OK.
5) Avec le bouton droit de la souris cliquez sur le fichier filelist.xml
puis sur la commande Modifier.
6) Dans la section <Exclude> ajoutez cette ligne : <REC>%Sytemroot%\explorer.exe</REC>
7) Enregistrez les modifications puis réactivez l'attribut
Lecture seule pour ce fichier.
Cette étape optionelle vous permet d'exclure le fichier Explorer.exe
du processus de restauration système.
8) Supprimez le fichier explorer.exe se trouvant dans ces arborescences
: \Windows\ServicePackFiles\i386 et \Windows\system32\dllcache.
Vous pouvez aussi remplacer les versions présentes par celle
que vous avez modifiée.
9) Écrasez la version du fichier explorer.exe présente
dans \Windows par celle que vous avez modifiée.
10) Au lancement de la boîte de dialogue Protection de fichiers
Windows, cliquez sur les boutons Annuler puis Oui.
11) Éventuellement, fermez puis relancez votre session interactive.
Si vous souhaitez modifier directement le fichier explorer.exe présent
dans \Windows, suivez cette astuce :
1) Ouvrez-le avec votre éditeur hexadécimal.
2) Procédez aux mêmes modifications.
3) Enregistrez le fichier dans \Windows\ServicePackFiles\i386 et
\Windows\system32\dllcache.
4) Selon la même méthode que précédemment
terminez le processus Explorer.exe.
5) Retournez dans "Frhed" pour enregistrer le fichier
dans \Windows.
6) Relancez le processus Explorer.exe.
Si vous avez fermé "Frhed" suivez cette astuce
:
1) Cliquez sur Démarrer/Exécuter puis saisissez :
cmd
2) Terminez le processus Explorer.exe.
3) Retournez dans la fenêtre d'Invite de commandes puis saisissez
cette commande : copy c:\temp\explorer1.exe c:\windows\explorer.exe
4) Confirmez le remplacement du fichier en appuyant sur la touche
0.
5) Saisissez cette commande : exit
6) Relancez le processus Explorer.exe.
Vous pouvez aussi changer le fichier exécutable qui est appelé
à chaque ouverture du Bureau Windows :
1) Enregistrez votre fichier modifié sous ce nom : explorer1.exe
dans \Windows.
2) Cliquez sur Démarrer/Exécuter puis saisissez :
regedit
3) Ouvrez cette arborescence : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon.
4) Dans le volet de droite éditez une valeur chaîne
nommée Shell.
5) Saisissez comme données de la valeur ceci : explorer1.exe
6) Fermez puis relancez votre session interactive.
Vous démarrerez sur le nouveau "Shell" que vous
aurez défini.
|
|