Шестнадцатеричный редактор для обратных инженеров, программистов и людей, ценищих свои сетчатки глаз при работе в три часа ночи.
/ˈɪmhɛks/

## ПоддержкаЕсли вам нравится моя работа, пожалуйста, рассмотрите возможность поддержки меня через GitHub Sponsors, Patreon или PayPal. Большое спасибо!
Скриншоты

Более скриншотов

Возможности
Функциональный шестнадцатеричный просмотрщик
- Изменение байтов
- Управление патчами
- Бесконечное отменение/повторение действий
- "Копировать байты как..."
- Байты
- Шестнадцатеричная строка
- Массив C, C++, C#, Rust, Python, Java и JavaScript
- ASCII-Art шестнадцатеричный просмотр
- Самостоятельная вставка HTML
- Простой поиск строк и шестнадцатеричных значений
- Переход с начала, конца и текущего положения курсора
- Цветовое выделение
- Настройка правил выделения переднего плана
- Выделение фона с использованием шаблонов, результатов поиска и закладок
- Отображение данных в виде списка различных типов
- Шестнадцатеричные целые числа (8, 16, 32, 64 бита)
- Подписанные и беззнаковые десятичные целые числа (8, 16, 32, 64 бита)
- Числа с плавающей запятой (16, 32, 64 бита)
- Цвета RGBA8
- HexII
- Двоичные данные
- Расшифровка данных как ASCII и пользовательские кодировки
- Встроенная поддержка UTF-8, UTF-16, ShiftJIS, большинства Windows кодировок и многих других
- Разбиение данных на страницы
Пользовательский язык для парсинга и выделения содержимого файла, аналогичный C++
- Автоматическая загрузка на основе MIME-типов и магических значений
- Массивы, указатели, структуры, объединения, перечисления, поля битового представления, пространства имён, поддержка малых и больших_ENDIAN, условные операторы и многое другое!
- Полезные сообщения об ошибках, цветовое выделение синтаксиса и маркировка ошибок
- Поддержка визуализации множества различных типов данных
- Изображения
- Аудио
- 3D модели
- Координаты
- Временные метки
Поддержка тем оформления
Импорт и экспорт данных
- Файлы в формате Base64
- IPS и IPS32 патчи
- Отчеты в формате Markdown
Проверка данных
- Интерпретация данных различных типов с учётом порядка байтов, десятичной, шестнадцатеричной и восьмеричной систем счисления, а также инвертирование битов
- Несigned и signed целые числа (8, 16, 24, 32, 48, 64 бит)
- Числа с плавающей запятой (16, 32, 64 бит)
- Signed и unsigned LEB128
- ASCII, Wide и UTF-8 символы и строки
- time32_t, time64_t, дата и время DOS
- GUID
- Цвета RGBA8 и RGB65
- Копирование и изменение байт через инспектор
- Добавление новых типов данных через язык шаблонов
- Поддержка скрытия строк, которые не используются
Конфигурационный предварительный процессор данных
Расшифровка и декодирование данных перед отображением в шестнадцатеричном редакторе
- Изменение данных без изменения исходного файла
- Поддержка добавления пользовательских узлов
Загрузка данных из множества источников данных
Поддержка локальных файлов
- Поддержка работы с большими файлами с быстрой и эффективной загрузкой
- Поддержка сырых дисков и разделов
Поддержка доступа к памяти через GDB
- Доступ к ОЗУ запущенного процесса или встроенных устройств через GDB
Поддержка данных Intel Hex и Motorola SREC
- Процессорная память
- Анализ всего адресного пространства запущенного процесса
Поиск данных
- Поддержка полного поиска файла или только части его содержимого
- Извлечение строк
- Вариант указания минимальной длины и набора символов (строчные буквы, прописные буквы, цифры, знаки препинания)
- Вариант указания кодировки (ASCII, UTF-8, UTF-16 большие и малые концы)
- Поиск последовательностей
- Поиск последовательности байтов или символов
- Вариант игнорирования регистра символов
- Поиск с использованием регулярных выражений
- Поиск строк с помощью регулярных выражений
- Бинарный шаблон
- Поиск последовательности байтов с опциональными wildcard'ами
- Поиск значений
- Поиск знаковых/беззнаковых целых чисел и чисел с плавающей точкой
- Поиск диапазонов значений
- Вариант указания размера и порядка байт
- Вариант игнорирования накладных расходов
Поддержка хэширования данных
Поддержка различных алгоритмов хэширования
Поддержка множества различных алгоритмов хэширования
- Доступно множество разных алгоритмов
- CRC8, CRC16 и CRC32 с пользовательскими начальными значениями и полиномами
- Доступно множество стандартных полиномов
- 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
- OneAtTime, Rotating, ShiftAndXor, SuperFast
- Murmur2_32, MurmurHash3_x86_32, MurmurHash3_x86_128, MurmurHash3_x64_128
- SipHash64, SipHash128
- XXHash32, XXHash64
- Tiger, Tiger2
- Blake2B, Blake2S
- Хэширование конкретных областей загруженных данных
- Хэширование произвольных строк
Поддержка сравнения данных
- Сравнение данных из разных источников
- Подчеркивание различий
- Таблица отличий
Интегрированный дизассемблер
- Поддержка всех архитектур, поддерживаемых Capstone
- ARM32 (ARM, Thumb, Cortex-M, AArch32)
- ARM64
- MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
- x86 (16-битный, 32-битный, 64-битный)
- PowerPC (32-битный, 64-битный)
- SPARC
- IBM SystemZ
- xCORE
- M68K
- TMS320C64X
- M680X
- Ethereum
- RISC-V
- WebAssembly
- MOS65XX
- Berkeley Packet Filter
Закладки
- Поддержка закладок с пользовательскими названиями и цветами
- Выделение отмеченной области в шестнадцатеричном редакторе
- Переход к закладкам
- Открытие содержимого закладки в новой вкладке
- Добавление комментариев к закладкам
Мощный анализатор и визуализатор данных
- Парсер файлов на основе магических чисел и база MIME типов
- Граф распределения байтов
- Граф энтропии
- Наивысшая и средняя энтропия
- Обнаружение зашифрованных/сжатых файлов
- Граф двугранной и слоевой распределений
Поддержка правил YARA
- Сканирование файла на уязвимости с использованием официальных правил YARA
- Выделение совпадений в шестнадцатеричном редакторе
- Переход к совпадениям
- Применение нескольких правил одновременно
Полезные инструменты
- Деманжер на основе LLVM для Itanium, MSVC, Rust и D-Lang
- Таблица ASCII
- Заменщик регулярных выражений
- Оценщик математических выражений (калькулятор)
- Графический калькулятор
- Выбор цвета в шестнадцатеричной системе с поддержкой многих различных форматов
- Конвертер оснований
- Обмен байтами
- Калькулятор прав доступа UNIX
- Поиск определений терминов в Википедии
- Утилиты работы с файлами
- Разделение файла
- Объединение файлов
- Уничтожение данных в файле
- Визуализатор IEEE754 для чисел с плавающей запятой
- Калькулятор деления через умножение на обратимую величину
- TCP-клиент/сервер
- Калькулятор алгоритма Евклида
Встроенный обновитель содержимого
Загрузка всех найденных в базе данных файлов непосредственно из ImHex
- Шаблонные файлы для декодирования различных форматов файлов
- Библиотеки для языка шаблонов
- Файлы magic для выявления типов файлов
- Настраиваемые узлы процессора данных
- Настраиваемые кодировки
- Настраиваемые темы
- Правила YARA
Модерн интерфейс
- Поддержка нескольких рабочих пространств
- Поддержка настраиваемых макетов
- Отсоединяемые окна
Простое начало работы
- Поддержка многих разных языков
- Упрощённый режим для начинающих
- Обширная документация
- Много примерных файлов доступно на Базе данных
- Ачивки, направляющие вас через возможности ImHex
- Интерактивные учебные материалы
Язык шаблонов
Язык шаблонов — это полностью настраиваемый язык программирования, разработанный специально для ImHex.
Он позволяет вам определять структуры и типы данных синтаксисом, похожим на C, а затем использовать их для парсинга и выделения содержимого файла.
База данных
Для шаблонов формата, библиотек, файлов magic и констант, обратитесь к репозиторию ImHex-Patterns.
Не стесняйтесь отправлять свои собственные файлы через Pull Request!## Требования
Чтобы использовать ImHex, должны выполняться следующие минимальные системные требования.> [!ВАЖНО]
В общем случае ImHex требует GPU с поддержкой OpenGL 3.0.
Есть выпуски (с суффиксом -NoGPU
), с отрисовкой в программном обеспечении, которые не требуют GPU, однако они могут работать значительно медленнее по сравнению с версией, ускоренной графическим процессором.
Если возможно, используйте на вашей системе дискретный GPU вместо встроенного.
ImHex обычно работает хорошо даже с встроенными GPU, но известны проблемы с графическими артефактами при использовании некоторых драйверов Intel HD GPU на Windows.
Операционная система:
-
Windows: Windows 7 или выше (Windows 10/11 рекомендованы)
-
macOS: macOS 13 (Ventura) или выше,
- Нижние версии также должны работать, но вам потребуется скомпилировать ImHex самостоятельно. Бинарники выпуска не будут работать.
- Встроенные сборки macOS не подписываются и требуют от вас вручную разрешить их в настройках Безопасность и конфиденциальность.
-
Linux: "Современный" Linux. Официально поддерживаются следующие дистрибутивы. Другие дистрибутивы поддерживаются через выпуски AppImage и Flatpak.
- Ubuntu и Debian
- Fedora
- RHEL/AlmaLinux
- Arch Linux
- Любые другие дистрибутивы также будут работать при компиляции ImHex из исходников.
-
Процессор: Официально поддерживаются x86_64 и ARM64, хотя любой 64-битный процессор с малым порядком байт должен работать.
-
Видеокарта: OpenGL 3.0 или выше - Поддерживаются интегрированные видеокарты Intel HD iGPUs, однако известно, что некоторые драйверы могут вызывать различные графические артефакты, особенно на Windows. Используйте на свой страх и риск.
- В случае, если у вас нет доступной видеокарты, есть выпуски с программным рендерингом для Windows и macOS.
-
Память: ~150 МБ, больше требуется для более сложного анализа.
-
Хранение данных: 150 МБ## УстановкаИнформация о том, как установить ImHex, содержится в руководстве Установка.
Компиляция
Для компиляции ImHex на любой платформе требуется GCC (или Clang) версии, поддерживающей C++23 или более позднюю.
Релизы для Windows и Linux создаются с использованием последней доступной версии GCC.
Релизы для macOS создаются с использованием последней доступной версии LLVM Clang.
Важно отметить, что компиляторы MSVC и AppleClang не поддерживаются, так как они обычно сильно устарели и недостаточно функциональны по сравнению с GCC и LLVM Clang.
[!NOTE]
Многие зависимости включены в репозиторий с помощью подмодулей, поэтому убедитесь, что клонируете его с помощью опции --recurse-submodules
.
Все зависимости, которые не включены, можно установить с помощью скриптов установщиков зависимостей, расположенных в папке /dist
.
Дополнительную информацию можно найти в руководстве Компиляция.
Вклад
См. Вклад
Разработка плагинов
Чтобы начать разработку плагинов для ImHex, используйте следующий шаблон проекта. Это позволит вам получить доступ ко всему библиотечному модулю libimhex, а также к API ImHex и регистру контента для взаимодействия с ImHex или добавления нового контента.
Благодарности
Вкладчики- iTrooz за внедрение ImHex на веб-платформу и множество вкладов во все части проекта
-
jumanji144 за значительные вклады в язык образцов и инфраструктуру ImHex
-
Mary за огромную помощь при переходе ImHex на macOS и участие в процессе разработки
-
Roblabla за добавление поддержки MSI-установщиков в ImHex
-
Mailaender за запуск ImHex на Flathub
-
Всем остальным, кто сообщал об ошибках через Discord или GitHub и с которыми было приятно общаться :)### Зависимости
-
Благодарю ocornut за их потрясающую Dear ImGui, которая используется для создания всего интерфейса.
-
Благодарю epezent за ImPlot, который используется для отображения данных в различных местах.
-
Благодарю Nelarius за ImNodes, который используется как основа для процессора данных.
-
Благодарю BalazsJako за ImGuiColorTextEdit, который используется для выделения синтаксиса языка шаблонов.- Благодарю nlohmann за их json библиотеку, используемую для конфигурационных файлов
-
Благодарю vitaut за их libfmt библиотеку, которая делает форматирование и логирование намного лучше
-
Благодарю btzy за nativefiledialog-extended и их отличную поддержку, используемые для управления диалогами выбора файлов на всех платформах
-
Благодарю danyspin97 за xdgpp, используемое для управления путями папок на Linux
-
Благодарю aquynh за capstone, которое является основой окна дизассемблирования
-
Благодарю rxi за microtar, используемое для извлечения скачанных активов магазина
-
Благодарю VirusTotal за Yara, используемое плагином Yara
-
Благодарю Martinsos за edlib, используемое для поиска последовательностей в представлении различий
-
Благодарю ron4fun за HashLibPlus, которое реализует каждый алгоритм хэширования
-
Благодарю mackron за miniaudio, используемое для воспроизведения аудиофайлов
-
Благодарю все остальные группы и организации, чьи библиотеки используются в ImHex
ЛицензияОсновная часть ImHex находится под лицензией GPLv2-only.
Значимыми исключениями являются следующие части, находящиеся под лицензией LGPLv2.1:
-
/lib/libimhex: Библиотека, которая позволяет плагинам взаимодействовать с ImHex.
-
/plugins/ui: Библиотека плагинов пользовательского интерфейса, содержащая некоторые общие элементы UI, которые могут использоваться другими плагинами.
Причина такого выбора заключается в возможности создания проприетарных плагинов для ImHex.
Комментарии ( 0 )