Resource Hacker : éditer la moitié d'un programme Windows qui n'est pas du code

Résumé

Resource Hacker ouvre la section de ressources d'un exécutable Windows et donne accès à ce qu'elle contient : boîtes de dialogue, icônes, menus, tables de chaînes et blocs de version. Un outil sérieux pour la localisation, à condition de ne pas sauter la sauvegarde.

Recommander
Nom
Resource Hacker
Version
5.2.8
Tarif
Gratuit
Open source
Propriétaire
Système
Windows
Mis à jour
2026-10-06 20:13

La moitié d'un programme Windows qui n'est pas du code

Une boîte de dialogue, c'est un rectangle avec un titre, quelques lignes de texte fixe, trois champs de saisie et deux boutons. Presque rien n'y est calculé à l'exécution. La position de chaque contrôle, le libellé de chaque bouton, la police utilisée, l'ordre dans lequel la touche Tab passe d'un champ à l'autre, l'élément qui reçoit le focus en premier — tout cela est décidé à l'avance et rangé dans l'exécutable, dans une section qui se trouve à côté des instructions machine sans jamais être exécutée. Il en va de même de l'icône de la barre de titre, de l'image d'un écran de démarrage, du menu en haut de la fenêtre, de la table qui associe une combinaison de touches à une commande, et de la table de chaînes d'où chaque libellé de l'interface est lu au chargement.

C'est cet agencement qui permet de traduire un programme sans le recompiler, et qui permet à quelqu'un n'ayant jamais vu une ligne de son code source d'en changer l'apparence. Resource Hacker est un lecteur et un éditeur de cette section précise. On le pointe vers un exécutable, il parcourt le répertoire de ressources et présente le contenu sous forme d'arbre : icônes, images bitmap, curseurs, boîtes de dialogue, menus, tables de chaînes, informations de version, manifestes d'application, et les blocs binaires qui n'ont pas de forme plus lisible. Rien n'est deviné et rien n'est régénéré : on voit ce que l'éditeur de liens a déposé là.

Arbre des ressources d'un exécutable

Quatre verbes, et le quatrième est sous-estimé

Le premier verbe est lire. Avant de modifier quoi que ce soit, cela vaut la peine de simplement regarder, parce que cet arbre répond à des questions autrement pénibles : combien de boîtes de dialogue ce programme contient-il réellement, reste-t-il une table de chaînes pour une langue que plus personne n'utilise, ce groupe d'icônes rassemble-t-il plusieurs tailles ou n'y en a-t-il qu'une seule que le système agrandit tant bien que mal.

Le deuxième verbe est modifier. Le texte, les icônes, les images bitmap et la disposition complète d'une boîte de dialogue se changent sur place — la surface visible du programme, retouchée sans toucher à un compilateur. Les boîtes de dialogue disposent d'un éditeur visuel où l'on déplace et redimensionne les contrôles ; les menus, les tables de chaînes et les blocs de version ont un formulaire. Les ressources binaires se rapiècent octet par octet, ce qui est rarement la bonne réponse et parfois la seule.

Le troisième verbe est extraire. Chaque icône, chaque image et chaque curseur peut être écrit dans un fichier, et cela suffit à justifier l'outil pour beaucoup de gens : les icônes enfouies dans un programme abandonné depuis des années sont souvent les seuls exemplaires qui existent encore. L'extraction est aussi la manière de démonter une ressource, d'en comprendre la structure et de remettre en place une version modifiée.

Le quatrième verbe est celui qui fait passer l'outil du statut de curiosité à celui d'objet utilisé chaque semaine : traiter en série. Ajouter une ressource, en supprimer une et en remplacer une sont trois opérations distinctes, et les mener sur un ensemble d'exécutables apparentés n'est guère plus difficile que de le faire une fois. Pour qui maintient plusieurs versions du même programme, c'est la différence entre un après-midi et une pause café.

Ce que modifier une boîte de dialogue implique vraiment

L'éditeur visuel est confortable, et son confort masque une contrainte réelle : une boîte de dialogue se dispose en unités qui ne sont pas des pixels. Un champ dont la largeur a été calculée pour le libellé d'une langue coupera le libellé plus long d'une autre, et un contrôle déplacé pour faire de la place chevauchera parfois un voisin déjà serré. Qui change les textes de l'interface doit s'attendre à réajuster ensuite, et vérifier le résultat sous plus d'un facteur d'échelle, parce que les unités de dialogue ne se comportent pas comme des coordonnées absolues.

L'outil expose également le script de ressources qui se trouve derrière le formulaire. Cela compte dès que la même modification doit être répétée sur de nombreuses boîtes de dialogue : changer le texte va plus vite que déplacer des contrôles, et le script rend la structure d'une disposition visible d'une manière que le canevas ne permet pas. C'est aussi la vue honnête de ce que l'éditeur produit — le formulaire est une couche posée sur la définition de ressource, pas son remplacement.

Éditeur de boîte de dialogue

Là où l'outil mérite sa place

La localisation est le cas évident. Traduire un programme qui n'a jamais été conçu pour l'être revient le plus souvent à modifier directement des tables de chaînes et des dispositions de boîtes de dialogue, et c'est exactement pour ce travail que cet outil a été fait. Le travail sur l'interface est le deuxième cas : changer la formulation d'un message, remplacer une icône datée par une actuelle, desserrer une disposition que l'auteur d'origine avait laissée à l'étroit. Le modélisme de jeu est le troisième, et le moins prévisible — les exécutables de jeux sont très chargés en ressources, et une grande part des petites retouches de menus, d'écrans de démarrage et d'illustrations d'interface n'est rien d'autre qu'un échange de ressources.

Les publics nommés par la fiche d'origine — développeurs, designers d'interface, utilisateurs à l'aise techniquement — sont les bons, et leur point commun n'est pas la compétence mais l'intention. C'est un outil pour qui doit changer quelque chose de précis et sait déjà ce qu'il veut y lire. C'est un mauvais outil pour explorer, car l'arbre des ressources ne dit pas un mot de ce à quoi sert une boîte de dialogue.

Ressources extraites

La discipline que l'outil ne peut pas imposer

Tout ici écrit directement dans un fichier dont d'autres programmes dépendent, et l'échec ne prend pas la forme d'un avertissement. Il prend celle d'un programme qui ne démarre plus. La première règle est donc ennuyeuse et sans marge de négociation : garder une copie intacte de l'original avant la première modification, chaque fois, y compris la fois où l'on est certain que cela va marcher. Travailler sur une copie et ranger l'original ne coûte rien et supprime entièrement le pire résultat.

La deuxième règle est de comprendre la ressource avant de la modifier. Une boîte de dialogue est une structure, pas une image ; une table de chaînes est indexée, et ses indices sont référencés depuis le code, si bien qu'insérer une chaîne au milieu décale tous les libellés suivants. La troisième règle est de commencer petit : remplacer une icône, vérifier que le programme démarre encore, puis passer à la boîte de dialogue qui compte. Ces habitudes manquent d'éclat, et elles font toute la différence entre un programme modifié et un programme cassé.

Ce qu'il n'est pas

Ce n'est pas un environnement de développement et cela n'aide pas à comprendre la logique. Les ressources décrivent l'apparence d'un programme et le nom de ses éléments ; le comportement habite dans du code que cet outil ne touche délibérément pas. Ce n'est pas non plus un décompilateur, et confondre les deux est le malentendu le plus courant : extraire une boîte de dialogue d'un exécutable et en remettre une autre est une opération légitime et banale, tandis que reconstruire du code source à partir de code machine est une autre activité, de portée juridique variable selon les pays. L'outil traite la première et reste à l'écart de la seconde.

Ce qu'il est, précisément, c'est un utilitaire bien délimité qui fait un travail avec une frontière claire. Il lit un format de fichier documenté, montre le contenu honnêtement, laisse le modifier, puis s'efface. L'ambition est modeste, et c'est pourquoi le programme reste utile depuis aussi longtemps.

Groupe d'icônes

Le verdict

Si vous avez déjà eu besoin de changer un mot dans l'interface d'un programme, de remplacer une icône ou de voir ce qu'un exécutable transporte avec lui, c'est le chemin le plus court entre la question et la réponse. L'interface est sobre, l'aide est complète, et la communauté qui l'entoure répond aux mêmes questions pratiques depuis des années. Le droit d'entrée tient en une habitude : copier le fichier d'abord. Tout le reste, dans cet outil, est indulgent.

Resource HackerTéléchargement
Systèmes pris en charge : Windows