À propos du projet

ImHex est un éditeur hexadécimal open-source destiné aux reverse engineers, aux programmeurs et aux personnes qui travaillent sur des données brutes tard dans la nuit. Il dispose d'une interface graphique moderne construite avec Dear ImGui et propose des versions stable, nightly et web. L'application de bureau prend en charge Windows, macOS, Linux et FreeBSD ; les versions incluent également des builds « NoGPU » à rendu logiciel pour les systèmes dépourvus de matériel graphique compatible OpenGL 3.0. L'expérience d'édition principale comprend le patch d'octets, la gestion des patchs, l'annulation/rétablissement infinis et des commandes de copie flexibles. Les données peuvent être copiées sous forme d'octets bruts, de chaînes hexadécimales, de tableaux dans des langages tels que C, C++, C#, Rust, Python, Java et JavaScript, de vues hexadécimales en ASCII-art ou de HTML autonome. La recherche couvre le texte simple et l'hexadécimal, les expressions régulières, les motifs binaires avec caractères génériques, les plages de valeurs numériques et l'extraction de chaînes. L'éditeur prend également en charge le goto depuis le début, la fin ou la position du curseur, les vues paginées et plusieurs règles de coloration syntaxique. ImHex inclut un langage de motifs personnalisé de type C++ pour analyser et mettre en évidence le contenu des fichiers. Il prend en charge les tableaux, les pointeurs, les structures, les unions, les énumérations, les champs de bits, les espaces de noms, le little/big endian, les conditionnels et des messages d'erreur utiles. Le langage de motifs peut visualiser des images, de l'audio, des modèles 3D, des coordonnées et des horodatages. Les fichiers de motifs, les bibliothèques, les fichiers magic, les encodages, les thèmes, les nœuds de processeur et les règles YARA peuvent être téléchargés via un updater de contenu intégré depuis la base de données ImHex. L'inspecteur de données peut interpréter les octets comme des entiers signés/non signés, des flottants, des valeurs LEB128, des chaînes ASCII/wide/UTF-8, des horodatages, des GUID, des couleurs, etc. Il prend en charge la copie et la modification d'octets, le masquage des lignes inutilisées et l'ajout de types personnalisés via le langage de motifs. Un préprocesseur de données basé sur des nœuds permet aux utilisateurs de modifier, déchiffrer ou décoder les données avant leur affichage dans l'éditeur hexadécimal, sans modifier la source sous-jacente. Des nœuds personnalisés peuvent être ajoutés. Les données peuvent être chargées depuis de nombreuses sources : fichiers locaux, disques et partitions bruts, mémoire d'un serveur GDB, formats Intel HEX et Motorola SREC, Base64, paquets UDP, mémoire de processus et fichiers distants via SSH/SFTP. Les fichiers volumineux sont gérés avec une vue paginée pour un chargement efficace. La vue de diffing compare les données de différentes sources, met en évidence les différences et propose un tableau des différences. Le désassembleur intégré est basé sur Capstone et prend en charge des architectures telles que ARM, ARM64, MIPS, x86, PowerPC, SPARC, RISC-V, WebAssembly, entre autres. Des désassembleurs personnalisés peuvent être ajoutés. Les outils d'analyse incluent la détection de magic de fichiers, une base de données de types MIME, des graphiques de distribution d'octets, des graphiques d'entropie, les valeurs d'entropie les plus élevées/moyennes, la détection de fichiers chiffrés/compressés et des graphiques de distribution digramme/en couches. Les règles YARA peuvent être exécutées pour analyser des fichiers vulnérables, mettre en évidence les correspondances et sauter aux résultats. Les signets prennent en charge les noms personnalisés, les couleurs, les commentaires, la mise en évidence, le saut vers et l'ouverture du contenu des signets dans de nouveaux onglets. Les outils de hachage incluent CRC8/16/32 avec polynômes personnalisés, MD5, la famille SHA, Adler32 et de nombreux autres algorithmes, appliqués à des régions sélectionnées ou à des chaînes arbitraires. Un ensemble d'utilitaires pratiques est inclus : démangleurs Itanium/MSVC/Rust/D basés sur LLVM, table ASCII, remplacement par expression régulière, calculatrice, calculatrice graphique, sélecteur de couleur hexadécimal, convertisseur de base, échangeur d'octets, calculatrice de permissions UNIX, visualiseur de flottants IEEE754, découpeur/combineur/destructeur de fichiers, client/serveur TCP, outil de requêtes HTTP, et plus encore. L'interface prend en charge plusieurs espaces de travail, des dispositions personnalisées et des fenêtres détachables. Les débutants peuvent utiliser le mode simplifié, des tutoriels interactifs, des succès et la documentation. ImHex prend en charge les plugins. Le SDK peut être compilé localement ou récupéré dans GitHub Actions, et un modèle de plugin est disponible. Le projet est majoritairement sous licence GPLv2-only, tandis que libimhex et la bibliothèque de plugins UI sont sous LGPLv2.1 pour permettre des plugins propriétaires. Les exigences système sont modestes : environ 50 MiB de RAM et 100 MiB de stockage, avec OpenGL 3.0 recommandé pour les versions normales. Le projet est traduit dans de nombreuses langues et accueille les contributions.