Un éditeur hexadécimal pour les indexes, les programmeurs et les personnes qui apprécient leurs rétines lorsqu'ils travaillent à 3 heures du matin.
/ ˈꞮmhɛks /
Justificatif
Si vous aimez mon travail, envisagez de me soutenir sur les sponsors GitHub, Patreon ou PayPal. Merci beaucoup!
Captures d'écran
Plus de captures d'écran
Caractéristiques
Vue hexiste
- Correction d'octets
- Gestion des patchs
- Infini UNDO / REDOT
- "Copier les octets comme ..."
- Octets
- Corde hexagonale
- C, C ++, C #, Rust, Python, Java & Javascript Array
- Vue hexagonale ascii-art
- Div autonome HTML
- Recherche de chaîne et hexadécimal simple
- Goto dès le début, la fin et la position du curseur actuel
- Fourance colorée
- Règles de mise en évidence de premier plan configurable
- Présentation de fond en utilisant des modèles, trouver des résultats et des signets
- Affichage des données comme une 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)
- Flotteurs (16, 32, 64 bits)
- Couleurs RGBA8
- Hexii
- Binaire
- Décodage des données comme ASCII et Encodings personnalisés
- Prise en charge intégrée pour UTF-8, UTF-16, ShiftJis, la plupart des encodages Windows et bien d'autres
- Vue de données paginée
C ++ personnalisé - comme le langage de modèle pour l'analyse de la mise en évidence du contenu d'un fichier
- Chargement automatique basé sur les types de mime et les valeurs magiques
- Arrays, pointeurs, structures, syndicats, énumériques, bitriels, espaces de noms, support en endan petit et grand, conditionnels et bien plus encore!
- Messages d'erreur utiles, mise en évidence de la syntaxe et marquage d'erreur
- Prise en charge de la visualisation de nombreux types de données différents
- Images
- Audio
- Modèles 3D
- Coordonnées
- Horaire
Support de thème
- Ne brûle pas vos rétines lorsqu'elles sont utilisées dans les séances de fin de soirée
- Mode sombre par défaut, mais un mode clair est également disponible
- Couleurs et styles personnalisables pour tous les éléments d'interface utilisateur via des fichiers de thème partageables
- Prise en charge des polices personnalisées
Importation et exportation de données
- Fichiers Base64
- Patches IPS et IPS32
- Rapports de Markdown
Inspecteur des données
- Interpréter les données comme de nombreux types différents avec Endianness, Decimal, Hexadecimal et Octal Support et Bit Inversion
- Entiers non signés et signés (8, 16, 24, 32, 48, 64 bits)
- Flotteurs (16, 32, 64 bits)
- LEB128 signé et non signé
- ASCII, larges et UTF-8 caractères et cordes
- Time32_T, time64_t, date et heure DOS
- Gâchis
- Couleurs RGBA8 et RGB65
- Copie et modification des octets via l'inspecteur
- Ajout de nouveaux types de données via la langue du modèle
- Support pour cacher les lignes qui ne sont pas utilisées
Pré-processeur de données basé sur des nœuds
- Modifier, décrypter et décoder les données avant qu'elle ne soit affichée dans l'éditeur hexagonal
- Modifier les données sans toucher la source sous-jacente
- Prise en charge de l'ajout de nœuds personnalisés
Chargement des données de nombreuses sources de données différentes
- Fichiers locaux
- Prise en charge d'énormes fichiers avec un chargement rapide et efficace
- Disques bruts
- Chargement des données à partir de disques et de partitions brutes
- Serveur GDB
- Accéder à la RAM d'un processus en cours ou des appareils intégrés via GDB
- Données Intel Hex et Motorola SREC
- Traiter la mémoire
- Inspectez l'ensemble de l'espace d'adresse d'un processus en cours d'exécution
Recherche de données
- Prise en charge de la recherche du fichier entier ou seulement une sélection
- Extraction de cordes
- Option pour spécifier la longueur et le jeu de caractères minimum (minuscules, supérieur, chiffres, symboles)
- Option pour spécifier le codage (ASCII, UTF-8, UTF-16 Big et Little Endian)
- Recherche de séquence
- Recherchez une séquence d'octets ou de caractères
- Option pour ignorer le cas de caractère
- Regrex Recherche
- Rechercher des chaînes en utilisant des expressions régulières
- Modèle binaire
- Recherche de séquences d'octets avec des jokers optionnels
- Recherche de valeur numérique
- Recherchez des entiers et des flotteurs signés / non signés
- Rechercher des gammes de valeurs
- Option pour spécifier la taille et l'endienne
- Option pour ignorer les valeurs non alignées
Support de hachage des données
- De nombreux algorithmes différents disponibles
- CRC8, CRC16 et CRC32 avec des valeurs initiales et des polynômes personnalisés
- De nombreux polynômes par défaut disponibles
- Md5
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- Adler32
- AP
- Bkdr
- Bernstein, Bernstein1
- Dek, DJB, ELF, FNV1, FNV1A, JS, PJW, RS, SDBM
- Onetrtime, rotation, shiftandxor, superflue
- Murmur2_32, Murmurhash3_x86_32, Murmurhash3_x86_128, Murmurhash3_x64_128
- Siphash64, siphash128
- Xxhash32, xxhash64
- Tiger, Tiger2
- Blake2b, Blake2s
- Hachage des régions spécifiques des données chargées
- Hachage des chaînes arbitraires
Support de difficulté
- Comparez les données de différentes sources de données
- Différence mettant en évidence
- Vue de table des différences
Désassembleur intégré
- Prise en charge de toutes les architectures soutenues par Capstone
- ARM32 (bras, pouce, cortex-M, Aarch32)
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
- x86 (16 bits, 32 bits, 64 bits)
- PowerPC (32 bits, 64 bits)
- Natte
- IBM Systemz
- xcore
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- Webassembly
- MOS65XX
- Filtre de paquet de Berkeley
Signets
- Prise en charge des signets avec des noms et des couleurs personnalisés
- Soulignation de la région mis en signet dans l'éditeur hexadécimal
- Sauter aux signets
- Contenu ouvert du signet dans un nouvel onglet
- Ajouter des commentaires aux signets
Analyseur de données et visualiseur fonctionnant
- Base de données de fichiers de fichiers magiques de fichiers et de type MIME
- Graphique de distribution de type d'octets
- Graphique d'entropie
- Entropie la plus élevée et la plus moyenne
- Détection de fichiers cryptée / compressée
- Digram et graphiques de distribution en couches
Support de la règle Yara
- Scannez un fichier pour les vulnérabilités avec les règles officielles de Yara
- Mettre en surbrillance les matchs dans l'éditeur hexagonal
- Sauter aux matchs
- Appliquer plusieurs règles à la fois
Outils utiles
- Itanium, MSVC, Rust et D-Lang Demangler basé sur LLVM
- Table ASCII
- Regex Remplaceur
- Évaluateur d'expression mathématique (calculatrice)
- Calculateur graphique
- Picker de couleur hexadécimal avec le soutien de nombreux formats différents
- Convertisseur de base
- Octet Swappeur
- Calculatrice des autorisations UNIX
- Finder de définition du terme wikipedia
- Déposer des services publics
- Échangeur de fichiers
- Combiner
- Déchiqueteur de fichiers
- Visualiseur de flotteur IEEE754
- Division par calculatrice de multiplication invariante
- Client / serveur TCP
- Calculateur d'algorithme euclidien
Mise à jour de contenu intégré
- Téléchargez tous les fichiers trouvés dans la base de données directement à partir de l'intérieur de l'IMHEX
- Fichiers de modèle pour décoder divers formats de fichiers
- Bibliothèques pour la langue du modèle
- Fichiers magiques pour la détection du type de fichier
- Nœuds de processeur de données personnalisés
- Encodages personnalisés
- Thèmes personnalisés
- Règles de Yara
Interface moderne
- Prise en charge de plusieurs espaces de travail
- Prise en charge des dispositions personnalisées
- Fenêtres détachables
Facile à démarrer
- Prise en charge de nombreuses langues différentes
- Mode simplifié pour les débutants
- Documentation approfondie
- De nombreux exemples de fichiers disponibles dans la base de données
- Réalisations vous guidant à travers les caractéristiques de IMHEX
- Tutoriels interactifs
Langage modèle
Le langage de modèle est le langage de programmation complètement 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.
- Code source: lien
- Documentation: lien
Base de données
Pour les modèles de format, les bibliothèques, les fichiers magiques et constants, consultez le référentiel IMHEX-Patterns.
N'hésitez pas à y faire vos propres fichiers!
Exigences
Pour utiliser IMHEX, les exigences minimales du système suivantes doivent être satisfaites.
Important
IMHEX nécessite un GPU avec le support OpenGL 3.0 en général. Il existe des versions disponibles (avec le suffixe -NoGPU
) qui sont rendues logicielles et ne nécessitent pas de GPU, mais celles-ci peuvent être beaucoup plus lentes que les versions accélérées GPU.
Si possible, faites utiliser un IMHEX le GPU dédié sur votre système au lieu de celui intégré. IMHEX s'exécutera généralement bien avec les GPU intégrés, mais certains pilotes GPU Intel HD sur Windows sont connus pour provoquer des artefacts graphiques.
- OS :
- Windows : Windows 7 ou supérieur (Windows 10/11 recommandé)
- macOS : macOS 12.1 (monterey) ou plus,
- Les versions inférieures sont prises en charge, mais vous devrez compiler vous-même
- Linux : Linux "moderne". Les distributions suivantes ont des versions officielles disponibles. D'autres distros sont pris en charge via les versions AppImage et Flatpak.
- Ubuntu et Debian
- Feutre
- Rhel / almalinux
- Arch Linux
- Fondamentalement, toute autre distribution fonctionnera également lors de la compilation de l'IMHEX à partir de sources.
- CPU : x86_64 (64 bits)
- GPU : OpenGL 3.0 ou plus
- Les IGPU Intel HD intégrés sont pris en charge, mais certains conducteurs sont connus pour provoquer divers artefacts graphiques, en particulier sur Windows. Utiliser à vos risques et périls.
- Dans le cas où vous n'avez pas de GPU disponible, il existe des versions rendues logicielles disponibles pour Windows et MacOS
- RAM : 256 Mo, plus peut être nécessaire pour une analyse plus compliquée
- Stockage : 150 Mo
Installation
Des informations sur la façon d'installer un IMHEX peuvent être trouvées dans le guide d'installation
Compilation
Pour compiler IMHEX sur n'importe quelle plate-forme, GCC (ou Clang) est requis avec une version qui prend en charge C ++ 23 ou plus. Sur MacOS, Clang est également nécessaire pour compiler un code OBJC. Toutes les versions sont en cours de construction en utilisant le dernier GCC disponible.
Note
De nombreuses dépendances sont regroupées dans le référentiel à l'aide de sous-modules, alors assurez-vous de le cloner à l'aide de l'option --recurse-submodules
. Toutes les dépendances qui ne sont pas groupées peuvent être installées à l'aide des scripts d'installation de dépendance trouvés dans le dossier /dist
.
Pour plus d'informations, consultez le guide de compilation.
Contributif
Voir contribution
Développement des plugins
Pour développer des plugins pour IMHEX, utilisez le modèle de modèle suivant pour commencer. Vous avez ensuite accès à l'intégralité de LibimHex ainsi qu'à l'API IMHEX et au registre de contenu pour interagir avec IMHEX ou pour ajouter de nouveaux contenus.
Crédits
Contributeurs
- Itrooz pour avoir mis un imprimérie sur le Web ainsi que des centaines de contributions dans chaque partie du projet
- Jumanji144 pour les énormes contributions à la langue du modèle et à l'infrastructure de l'IMHEX
- Mary pour son immense aide à transporter un imprimé
- ROBLABLA pour ajouter la prise en charge du programme d'installation MSI à IMHEX
- Mailaender pour avoir mis un imprimé
- Tous les autres qui ont signalé des problèmes sur Discord ou Github avec lesquels j'ai eu d'excellentes conversations :)
Dépendances
- Merci beaucoup à Ocornut pour leur incroyable chère Imgui qui est utilisé pour construire toute l'interface
- Merci à EPEZENT pour implacer utilisé pour tracer des données à divers endroits
- Merci à Nelarius pour les imnodes utilisés comme base pour le processeur de données
- Merci à Balazsjako pour Imguicolortextedit utilisé pour la syntaxe de la langue de motif en surbrillance
- Merci à Nlohmann pour leur bibliothèque JSON utilisée pour les fichiers de configuration
- Merci à Vitaut pour leur bibliothèque libfmt qui rend la mise en forme et la journalisation tellement mieux
- Merci à BTZY pour NativeFileDialog-étendu et leur excellent support, utilisé pour gérer les dialogues de fichiers sur toutes les plateformes
- Merci à Danyspin97 pour XDGPP utilisé pour gérer les chemins de dossier sur Linux
- Merci à Aquynh pour Capstone qui est la base de la fenêtre de démontage
- Merci à RXI pour le microtar utilisé pour l'extraction des actifs de magasin téléchargés
- Merci à Virustotal pour Yara utilisé par le plugin Yara
- Merci à Martinsos pour Edlib utilisé pour la recherche de séquences dans la vue de difficulté
- Merci à Ron4fun pour Hashlibplus qui implémente chaque algorithme de hachage sous le soleil
- Merci à Mackron pour Minidio 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 de l'IMHEX est sous la licence GPLV2 uniquement. Les exceptions notables à cela sont les parties suivantes qui sont sous la licence LGPLV2.1:
- / lib / libimhex : la bibliothèque qui permet aux plugins d'interagir avec IMHEX.
- / plugins / ui : la bibliothèque de plugin d'interface utilisateur qui contient des éléments d'interface utilisateur courants qui peuvent être utilisés par d'autres plugins
La raison en est de permettre à des plugins propriétaires d'être développés pour IMHEX.