Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !
ImHex — 🔍 Un éditeur hexadécimal pour les rétro-ingénieurs, les programmeurs et les personnes qui tiennent à leur rétine lorsqu'ils travaillent à 3 heures du matin. | Kitploit
🔍 Un éditeur hexadécimal pour les rétro-ingénieurs, les programmeurs et les personnes qui tiennent à leur rétine lorsqu'ils travaillent à 3 heures du matin.
Un éditeur hexadécimal pour les ingénieurs en rétro-ingénierie, les programmeurs et ceux qui tiennent à leurs rétines lorsqu'ils travaillent à 3 heures du matin.
/ˈɪmhɛks/
Soutenir
Si vous aimez mon travail, veuillez envisager de me soutenir sur GitHub Sponsors, Ko-Fi ou PayPal. Merci beaucoup !
Sponsors notables
JetBrains, nous fournissant gratuitement des licences All Products Pack pour le développement
SignPath, nous fournissant gratuitement des certificats de signature de code pour nos builds Windows
Amazon, nous fournissant gratuitement des crédits AWS Cloud pour notre CI
Vous aimeriez apparaître ici aussi ? Contactez-nous à [email protected] !
Captures d'écran
Plus de captures d'écran
Fonctionnalités
Vue hexadécimale complète
Correction d'octets
Gestion des correctifs
Annulation/Rétablissement illimité
"Copier les octets en tant que..."
Octets
Chaîne hexadécimale
Tableau C, C++, C#, Rust, Python, Java et JavaScript
Vue hexadécimale en art ASCII
Div HTML autonome
Recherche simple de chaîne et d'hexadécimal
Aller à depuis le début, la fin et la position actuelle du curseur
Mise en évidence colorée
Règles de mise en évidence du premier plan configurables
Mise en évidence de l'arrière-plan à l'aide de motifs, de résultats de recherche et de signets
Affichage des données sous forme de liste de nombreux types différents
Entiers hexadécimaux (8, 16, 32, 64 bits)
Entiers décimaux signés et non signés (8, 16, 32, 64 bits)
Flottants (16, 32, 64 bits)
Couleurs RGBA8
HexII
Binaire
Décodage des données en ASCII et encodages personnalisés
Prise en charge intégrée de UTF-8, UTF-16, ShiftJIS, la plupart des encodages Windows et bien d'autres
Vue des données paginée
Langage de motifs personnalisé de type C++ pour analyser et mettre en évidence le contenu d'un fichier
Chargement automatique basé sur les types MIME et les valeurs magiques
Tableaux, pointeurs, structures, unions, énumérations, champs de bits, espaces de noms, prise en charge du petit et du grand boutisme, conditionnels et bien plus !
Messages d'erreur utiles, coloration syntaxique et marquage d'erreurs
Prise en charge de la visualisation de nombreux types de données différents
Images
Audio
Modèles 3D
Coordonnées
Horodatages
Prise en charge des thèmes
Ne brûle pas vos rétines lorsqu'il est utilisé lors de sessions tardives
Mode sombre par défaut, mais un mode clair est également disponible
Couleurs et styles personnalisables pour tous les éléments de l'interface utilisateur via des fichiers de thème partageables
Prise en charge des polices personnalisées
Importation et exportation de données
Fichiers Base64
Correctifs IPS et IPS32
Rapports Markdown
Tableaux binaires pour divers langages de programmation
Inspecteur de données
Interprétation des données sous de nombreux types différents avec prise en charge du boutisme, décimal, hexadécimal et octal et inversion de bits
Entiers non signés et signés (8, 16, 24, 32, 48, 64 bits)
Flottants (16, 32, 64 bits)
LEB128 signé et non signé
Caractères et chaînes ASCII, Wide et UTF-8
time32_t, time64_t, date et heure DOS
GUIDs
Couleurs RGBA8 et RGB65
Copie et modification d'octets via l'inspecteur
Ajout de nouveaux types de données via le langage de motifs
Prise en charge du masquage des lignes inutilisées
Préprocesseur de données basé sur des nœuds
Modifier, déchiffrer et décoder les données avant qu'elles ne soient affichées dans l'éditeur hexadécimal
Modifier les données sans toucher à la source sous-jacente
Prise en charge de l'ajout de nœuds personnalisés
Chargement de données à partir de nombreuses sources de données différentes
Fichiers locaux
Prise en charge des fichiers volumineux avec un chargement rapide et efficace
Disques bruts
Chargement de données à partir de disques bruts et de partitions
Serveur GDB
Accès à la RAM d'un processus en cours ou de dispositifs intégrés via GDB
Données Intel Hex et Motorola SREC
Données encodées en Base64
Paquets UDP
Prise en charge de l'affichage des données brutes reçues via UDP
Mémoire de processus
Inspecter tout l'espace d'adressage d'un processus en cours
Fichiers distants via SSH avec SFTP
Prise en charge du chargement de fichiers depuis des serveurs distants en utilisant SSH et SFTP
Recherche de données
Prise en charge de la recherche dans tout le fichier ou seulement dans une sélection
Extraction de chaîne
Option pour spécifier la longueur minimale et le jeu de caractères (minuscules, majuscules, chiffres, symboles)
Option pour spécifier l'encodage (ASCII, UTF-8, UTF-16 petit et grand boutisme)
Recherche de séquence
Recherche d'une séquence d'octets ou de caractères
Option pour ignorer la casse des caractères
Recherche par expression régulière
Recherche de chaînes à l'aide d'expressions régulières
Motif binaire
Recherche de séquences d'octets avec des jokers optionnels
Recherche de valeur numérique
Recherche d'entiers signés/non signés et de flottants
Recherche de plages de valeurs
Option pour spécifier la taille et le boutisme
Option pour ignorer les valeurs non alignées
Prise en charge du hachage de données
De nombreux algorithmes différents disponibles
CRC8, CRC16 et CRC32 avec valeurs initiales et polynômes personnalisés
Réalisations vous guidant à travers les fonctionnalités d'ImHex
Tutoriels interactifs
Langage de motifs
Le langage de motifs est le langage de programmation entièrement personnalisé développé pour ImHex.
Il vous permet de définir des structures et des types de données dans une syntaxe de type C, puis de les utiliser pour analyser et mettre en évidence le contenu d'un fichier.
Pour les motifs de formats, les bibliothèques, les fichiers magiques et de constantes, consultez le dépôt ImHex-Patterns.
N'hésitez pas à y soumettre vos propres fichiers via une PR !
Configuration requise
Pour utiliser ImHex, les exigences système minimales suivantes doivent être satisfaites.
[!IMPORTANT]
ImHex nécessite un GPU avec prise en charge d'OpenGL 3.0 en général.
Des versions sont disponibles (avec le suffixe -NoGPU) qui sont rendues par logiciel et ne nécessitent pas de GPU, mais celles-ci peuvent être beaucoup plus lentes que les versions accélérées par GPU.
Si possible, faites en sorte qu'ImHex utilise le GPU dédié de votre système plutôt que celui intégré.
ImHex fonctionnera généralement bien avec les GPU intégrés également, mais certains pilotes Intel HD GPU sous Windows sont connus pour provoquer des artefacts graphiques.
OS :
Windows : Windows 7 ou supérieur (Windows 10/11 recommandé)
macOS : macOS 15 (Sequoia) ou supérieur,
Les versions inférieures devraient également fonctionner, mais vous devrez compiler ImHex vous-même. Les binaires des versions ne fonctionneront PAS en raison de l'absence de runners CI macOS 15 ou inférieurs sur GitHub.
La version macOS n'est pas signée et vous devrez les autoriser manuellement dans les paramètres de Sécurité et Confidentialité.
Linux : Linux "moderne". Les distributions suivantes ont des versions officielles disponibles. Les autres distributions sont prises en charge via les versions AppImage, Flatpak et Snap.
Ubuntu et Debian
Fedora
RHEL/AlmaLinux
Arch Linux
Pratiquement toute autre distribution fonctionnera également lors de la compilation d'ImHex à partir des sources.
FreeBSD : Testé sur FreeBSD 14.3
Les autres versions fonctionneront très probablement aussi mais ne sont pas testées
CPU : Officiellement pris en charge : x86, AMD64 et ARM64, bien que tout CPU little-endian devrait fonctionner.
GPU : OpenGL 3.0 ou supérieur
Les iGPU Intel HD intégrés sont pris en charge, mais certains pilotes sont connus pour provoquer divers artefacts graphiques, surtout sous Windows. Utilisez à vos risques et périls.
Si vous ne disposez pas d'un GPU, il existe des versions rendues par logiciel disponibles pour Windows et macOS
RAM : ~50 Mo, plus est nécessaire pour des analyses plus complexes
Stockage : ~100 Mo
Installation
Les informations sur la façon d'installer ImHex se trouvent dans le guide Installation
Compilation
Pour compiler ImHex sur n'importe quelle plateforme, GCC (ou Clang) est requis avec une version prenant en charge C++23 ou supérieur.
Les versions Windows et Linux sont construites en utilisant le dernier GCC disponible.
Les versions macOS sont construites en utilisant le dernier LLVM Clang disponible.
Important à noter, les compilateurs MSVC et AppleClang ne sont PAS pris en charge car ils sont généralement tous deux sévèrement obsolètes et manquent de fonctionnalités que GCC et LLVM Clang possèdent.
[!NOTE]
De nombreuses dépendances sont intégrées dans le dépôt à l'aide de sous-modules, assurez-vous donc de le cloner avec l'option --recurse-submodules.
Toutes les dépendances qui ne sont pas intégrées peuvent être installées à l'aide des scripts d'installation de dépendances trouvés dans le dossier /dist.
Pour plus d'informations, consultez le guide Compilation.
Pour développer des plugins pour ImHex, utilisez le projet modèle suivant pour commencer. Vous aurez ensuite accès à l'intégralité de libimhex ainsi qu'à l'API ImHex et au registre de contenu pour interagir avec ImHex ou ajouter du nouveau contenu.
Pour construire un plugin, vous devrez utiliser notre SDK
Obtenir le SDK localement
Vous pouvez construire le SDK en compilant ImHex comme ceci :
DESTDIR=install ninja install
Le SDK sera alors disponible dans install/usr/local/share/imhex/sdk. Vous devrez définir la variable IMHEX_SDK_PATH sur ce chemin (absolu).
Obtenir le SDK dans une CI GitHub Actions
Vous pouvez utiliser cette action pour télécharger automatiquement le SDK sur votre GitHub Runner
Toutes les autres personnes qui ont signalé des problèmes sur Discord ou GitHub et avec qui j'ai eu d'excellentes conversations :)
DépendancesUn grand merci à ocornut pour leur incroyable Dear ImGui qui est utilisé pour construire l'interface entière
Merci à epezent pour ImPlot utilisé pour tracer des données à divers endroits
Merci à Nelarius pour ImNodes utilisé comme base pour le processeur de données
Merci à BalazsJako pour ImGuiColorTextEdit utilisé pour la coloration syntaxique du langage de motifs
Merci à nlohmann pour leur bibliothèque json utilisée pour les fichiers de configuration
Merci à vitaut pour leur bibliothèque libfmt qui rend le formatage et la journalisation bien meilleurs
Merci à btzy pour nativefiledialog-extended et leur excellent support, utilisé pour gérer les boîtes de dialogue de fichiers sur toutes les plateformes
Merci à danyspin97 pour xdgpp utilisé pour gérer les chemins de dossiers sur Linux
Merci à aquynh pour capstone qui est la base de la fenêtre de désassemblage
Merci à rxi pour microtar utilisé pour extraire les ressources téléchargées de la boutique
Merci à VirusTotal pour Yara utilisé par le plugin Yara
Merci à Martinsos pour edlib utilisé pour la recherche de séquences dans la vue de différences
Merci à ron4fun pour HashLibPlus qui implémente tous les algorithmes de hachage existants
Merci à mackron pour miniaudio utilisé pour lire des fichiers audio
Merci à tous les autres groupes et organisations dont les bibliothèques sont utilisées dans ImHex
Licence
La plus grande partie d'ImHex est sous licence GPLv2 uniquement.
Les exceptions notables à cela sont les parties suivantes qui sont sous licence LGPLv2.1 :
/lib/libimhex : La bibliothèque qui permet aux Plugins d'interagir avec ImHex.
/plugins/ui : La bibliothèque de plugins UI qui contient quelques éléments d'interface communs pouvant être utilisés par d'autres plugins
La raison de cela est de permettre le développement de plugins propriétaires pour ImHex.
Ce programme ne transférera aucune information vers d'autres systèmes en réseau
sauf demande spécifique de l'utilisateur ou de la personne installant ou
l'exploitant.