Achievements, die dich durch die Funktionen von ImHex führen
Interaktive Tutorials
Pattern-Sprache
Die Pattern-Sprache ist die vollständig eigene Programmiersprache, die für ImHex entwickelt wurde.
Sie ermöglicht es dir, Strukturen und Datentypen in einer C-ähnlichen Syntax zu definieren und sie dann zum Parsen und Hervorheben des Inhalts einer Datei zu verwenden.
Für Format-Patterns, Bibliotheken sowie Magic- und Konstantendateien schau in das Repository ImHex-Patterns.
Reiche dort gerne auch deine eigenen Dateien per PR ein!
Systemanforderungen
Um ImHex zu verwenden, müssen die folgenden Mindestsystemanforderungen erfüllt sein.
[!IMPORTANT]
ImHex benötigt grundsätzlich eine GPU mit OpenGL-3.0-Unterstützung.
Es gibt Releases (mit dem Suffix -NoGPU), die per Software gerendert werden und keine GPU benötigen. Diese können jedoch deutlich langsamer sein als die GPU-beschleunigten Versionen.
Wenn möglich, bring ImHex dazu, die dedizierte GPU deines Systems statt der integrierten zu verwenden.
ImHex läuft normalerweise auch mit integrierten GPUs einwandfrei, aber bestimmte Intel-HD-GPU-Treiber unter Windows verursachen bekanntermaßen Grafikfehler.
Betriebssystem:
Windows: Windows 7 oder höher (Windows 10/11 empfohlen)
macOS: macOS 15 (Sequoia) oder höher,
Ältere Versionen sollten ebenfalls noch funktionieren, aber du musst ImHex dann selbst kompilieren. Die Release-Binaries werden NICHT funktionieren, da GitHub keine CI-Runner für macOS 15 oder älter bereitstellt.
Der macOS-Build ist nicht signiert und du musst ihn in den Sicherheits- und Datenschutzeinstellungen manuell zulassen.
Linux: "Modernes" Linux. Für die folgenden Distributionen gibt es offizielle Releases. Andere Distributionen werden über die AppImage-, Flatpak- und Snap-Releases unterstützt.
Ubuntu und Debian
Fedora
RHEL/AlmaLinux
Arch Linux
Grundsätzlich funktioniert auch jede andere Distribution, wenn man ImHex aus den Quellen kompiliert.
FreeBSD: Getestet auf FreeBSD 14.3
Andere Versionen funktionieren höchstwahrscheinlich ebenfalls, sind aber ungetestet
CPU: Offiziell unterstützt werden x86, AMD64 und ARM64, aber jede Little-Endian-CPU sollte funktionieren.
GPU: OpenGL 3.0 oder höher
Integrierte Intel-HD-iGPUs werden unterstützt, allerdings verursachen bestimmte Treiber bekanntermaßen verschiedene Grafikfehler, insbesondere unter Windows. Nutzung auf eigene Gefahr.
Falls keine GPU verfügbar ist, gibt es für Windows und macOS per Software gerenderte Releases
RAM: ~50MiB, für komplexere Analysen wird mehr benötigt
Zum Kompilieren von ImHex auf jeder Plattform wird GCC (oder Clang) in einer Version benötigt, die C++23 oder höher unterstützt.
Windows- und Linux-Releases werden mit dem neuesten verfügbaren GCC erstellt.
macOS-Releases werden mit dem neuesten verfügbaren LLVM Clang erstellt.
Wichtig zu beachten ist, dass die Compiler MSVC und AppleClang beide NICHT unterstützt werden, da sie generell stark veraltet sind und ihnen Funktionen fehlen, die GCC und LLVM Clang besitzen.
[!NOTE]
Viele Abhängigkeiten sind über Submodule im Repository gebündelt. Stelle daher sicher, dass du es mit der Option --recurse-submodules klonst.
Alle nicht gebündelten Abhängigkeiten können mithilfe der Abhängigkeits-Installationsskripte im Ordner /dist installiert werden.
Um Plugins für ImHex zu entwickeln, verwende das folgende Vorlagenprojekt als Einstieg. Du hast dann Zugriff auf die gesamte libimhex sowie die ImHex-API und das Content-Registry, um mit ImHex zu interagieren oder neue Inhalte hinzuzufügen.
Zum Erstellen eines Plugins benötigst du unser SDK
Das SDK lokal abrufen
Du kannst das SDK erstellen, indem du ImHex wie folgt kompilierst:
DESTDIR=install ninja install
Das SDK ist dann unter install/usr/local/share/imhex/sdk verfügbar. Du musst die Variable IMHEX_SDK_PATH auf diesen (absoluten) Pfad setzen.
Das SDK in einer GitHub-Actions-CI abrufen
Du kannst diese Action verwenden, um das SDK automatisch auf deinen GitHub-Runner herunterzuladen
AxCut für eine enorme Menge an Beiträgen zum Pattern-Text-Editor und unzählige andere Teile von ImHex
iTrooz dafür, dass er ImHex ins Web gebracht hat, sowie für Hunderte von Beiträgen in jedem Teil des Projekts
jumanji144 für große Beiträge zur Pattern-Sprache und zur Infrastruktur von ImHex
Mary für ihre immense Hilfe beim Portieren von ImHex auf macOS und die Unterstützung während der Entwicklung
Roblabla für das Hinzufügen der MSI-Installer-Unterstützung zu ImHex
Mailaender dafür, dass er ImHex zu Flathub gebracht hat
Allen anderen, die auf Discord oder GitHub Probleme gemeldet haben und mit denen ich tolle Gespräche geführt habe :)
Abhängigkeiten- Vielen Dank an ocornut für ihr erstaunliches Dear ImGui, das für die Erstellung der gesamten Oberfläche verwendet wird
Dank an epezent für ImPlot, das zum Plotten von Daten an verschiedenen Stellen verwendet wird
Dank an Nelarius für ImNodes, das als Grundlage für den Datenprozessor dient
Dank an BalazsJako für ImGuiColorTextEdit, das für die Syntaxhervorhebung der Pattern-Sprache verwendet wird
Dank an nlohmann für ihre json-Bibliothek, die für Konfigurationsdateien verwendet wird
Dank an vitaut für ihre libfmt-Bibliothek, die Formatierung und Protokollierung erheblich verbessert
Dank an btzy für nativefiledialog-extended und ihre großartige Unterstützung, verwendet für Dateidialoge auf allen Plattformen
Dank an danyspin97 für xdgpp, das zur Behandlung von Ordnerpfaden unter Linux verwendet wird
Dank an aquynh für capstone, das die Grundlage des Disassemblierungsfensters bildet
Dank an rxi für microtar, das zum Extrahieren heruntergeladener Store-Assets verwendet wird
Dank an VirusTotal für Yara, das vom Yara-Plugin verwendet wird
Dank an Martinsos für edlib, das für die Sequenzsuche in der Diff-Ansicht verwendet wird
Dank an ron4fun für HashLibPlus, das jeden erdenklichen Hash-Algorithmus implementiert
Dank an mackron für miniaudio, das zum Abspielen von Audiodateien verwendet wird
Dank an alle anderen Gruppen und Organisationen, deren Bibliotheken in ImHex verwendet werden
Lizenz
Der größte Teil von ImHex steht unter der GPLv2-only-Lizenz.
Nennenswerte Ausnahmen hiervon sind die folgenden Teile, die unter der LGPLv2.1-Lizenz stehen:
/lib/libimhex: Die Bibliothek, die es Plugins ermöglicht, mit ImHex zu interagieren.
/plugins/ui: Die UI-Plugin-Bibliothek, die einige allgemeine UI-Elemente enthält, die von anderen Plugins verwendet werden können.
Der Grund dafür ist, die Entwicklung proprietärer Plugins für ImHex zu ermöglichen.
Dieses Programm überträgt keine Informationen an andere vernetzte Systeme,
sofern dies nicht ausdrücklich vom Benutzer oder von der Person, die es
installiert oder betreibt, angefordert wird.