McAfee FileInsight
FileInsight – это бесплатный hex-редактор для Windows от компании McAfee Labs. Продукт, само собой, выполняет весь стандартный функционал, сопутствующий подобному софту, предлагая удобный интерфейс для просмотра и редактирования файлов в шестнадцатеричном и текстовом режимах. Но это лишь капля в море, если посмотреть на весь его функционал. Начать стоит с того, что FileInsight способен парсить структуру исполняемых бинарников для Windows (PE файлов), а также OLE-объектов Microsoft Office. Мало этого, пользователю предлагается встроенный x86 дизассемблер. Достаточно выбрать часть файла, которую хочешь просмотреть в виде читаемого кода, и FileInsight покажет этот фрагмент как листинг ассемблерных инструкций. Дизассемблер особенно полезен, когда ищешь шеллкод в зловредных файлах. Среди других опций, которые придутся по душе реверсерам – возможность импортировать объявления структур. Для этого программе достаточно указать заголовочный файл с объявлениями вроде:
struct ANIHeader { DWORD cbSizeOf; // Num bytes in AniHeader DWORD cFrames; // Number of unique Icons DWORD cSteps; // Number of Blits };
В этом случае программа сама будет парсить подобные конструкции. Впрочем, и по умолчанию предлагается немало интуитивных алгоритмов для обработки кода. Речь, прежде всего, идет о декодировании многих методов обфускации (xor, add, shift, Base64 и т.д.) – встроенные скрипты щелкают подобную криптозащиту на раз-два. Тут надо заметить, что в качестве объекта исследования необязательно должен быть бинарник, это может быть и обычная веб-страница, вызывающая подозрения. Многие действия программа позволяет автоматизировать с помощью простых сценариев на JavaScript или модулей на Python, которых написано уже немало. Увы, при всех достоинствах, у FileInsight есть и серьезный недостаток, выражающийся в невозможности обрабатывать большие файлы. К примеру, если попытаешься скормить утилите файл размером в 400-500 Мб, вылетает ошибка «Failed to open document».
Несколько примеров
Производные цвета того же оттенка
Одна из самых распространенных задач: сделать компонент, который будет принимать один единственный базовый оттенок, но состоять из нескольких его вариаций. В моём примере, это типичный алерт, у которого цвет текста, фона и обводки имеют один оттенок и насыщенность но разную яркость: .success { border-color: hsl(120, 50%, 40%); color: hsl(120, 50%, 20%); background-color: hsl(120, 50%, 90%); } Видите, как красиво и наглядно? Сразу видно, что это одно «семейство» цветов. В других форматах это выглядело бы как-то так: /* rgb */ .alert { border-color: rgb(51, 153, 51); color: rgb(25, 77, 25); background-color: rgb(217, 242, 217); } /* hex */ .alert { border-color: #339933; color: #194d19; background-color: #d9f2d9; } Не знаю как вам, а мне сложно глядя на такой код сказать связаны ли как-то эти цвета или нет.
Но это мелочи. Настоящая мощь раскрывается при использовании css custom properties.
Как говорится, следите за руками. Если сделать любую составляющую цвета, например оттенок, переменной, тогда мы сможем легко создавать бесконечное количество вариаций нашего компонента изменяя в нем исключительно базовый оттенок. А все производные будут отталкиваться от него.
.alert { border-color: hsl(var(—hue), 50%, 40%); color: hsl(var(—hue), 50%, 20%); background-color: hsl(var(—hue), 50%, 90%); }
Обесцвечивание
В этом примере выключенная кнопка имеет сниженную насыщенность. Она всё ещё имеет едва заметный синий оттенок, но при этом почти серая. А при наведении кнопка сохраняет оттенок и насыщенность, но становится темнее.
Для решения такой задачи достаточно изменять всего один из трех параметров чтобы получить производный, но похожий цвет. Что при использовании rgb или hex сделать не так просто.
Как и в первом примере, вы можете легко подменять оттенок, не затрагивая все остальные характеристики цвета в вашем компоненте.
Наследование цвета
Одна из самых крутых техник: создание одного оттенка, отталкиваясь от другого. Достигается это простым сложением в calc(). :root{ —hue: 120; } header { background-color: hsl(var(—hue), 30%, 20%) } header button { background-color: hsl(calc(var(—hue) + 130), 80%, 50%) } В этом примере оттенок кнопки зависит (+130° на цветовом круге) от оттенка контейнера. Таким вот нехитрым образом вы можете создавать полноценные гибкие цветовые палитры для ваших сайтов, устанавливая всего один базовый оттенок и отталкиваясь от него.
И все ваши компоненты будут сохранять насыщенность и яркость, как это продемонстрировано в предыдущих примерах.
Hex Editor Neo
Существует две версии этого шестнадцатеричного редактора от компании HDD Software – простая бесплатная и продвинутая коммерческая версия. Freeware-вариант – это добротный, но мало чем примечательный HEX-редактор, имеющий классный настраиваемый интерфейс с поддержкой разных цветовых схем. Не более того. А вот профессиональная версия Hex Editor Neo предоставляет несколько полезных опций, которые могут быть крайне полезны при анализе бинарников. К примеру, пользователь получает возможность декодирования кода, закриптованного с помощью наиболее общих алгоритмов. Помимо этого появляется возможность просмотра и редактирования локальных ресурсов типа NTFS-потоков, локальных дисков, памяти процесса, а также оперативки. В самой полной версии появляется и поддержка скриптового языка, позволяющая автоматизировать многие процессы с помощью сценариев на VBScript и JavaScript. Но самый смак в том, что к твоим услугам предоставляется встроенный дизассемблер, который работает и с x86, и с x64, и с .NET-бинарниками! Еще одна фича – быстрое создание патчей, основанное на сравнении двух бинарников. Звучит впечатляюще, но лучше ли он, чем FileInsight? Скорее, нет. FileInsight в целом выглядит более функционально. С другой стороны, любая, даже бесплатная версия Hex Editor Neo отлично работает даже с очень большими файлами и позволяет искать ASCII и Unicode-строки. Дизассемблер здесь не ограничивается одной лишь x86 платформой, а встроенный редактор ресурсов очень удобен. Есть над чем подумать.
Другие hex-редакторы
Существуют и другие hex-редакторы, которые так же заслуживают внимания и могут пригодится.
Шестнадцатеричный редактор XVI32 простой и удобный
XVI32 — это бесплатный шестнадцатеричный редактор, название которого произошло от римской цифры XVI (16).
- Поддерживает скрипты для автоматизации задач.
- Поиск по шаблону
- ASCII/ANSI
- Конвертация символов на основе пользовательских определений
- Запись отдельных блоков в файл
- И другие возможности…
- Хранит открытый файл в памяти, так что с большими файлами будут проблемы.
- Как таковой, нет истории команд. Это означает, что все вносимые изменения вносятся «как есть» и вам придется их записывать или запоминать
Поддерживает Windows 9x/NT/2000/XP/Vista/7
Hex-редактор HexEdit со специализированным калькулятором
HexEdit еще один бесплатный двоичный редактор от MiTeC.
- Не нужно устанавливать (портативная)
- Редактор оперативной памяти и диска
- Специализированный калькулятор
- Умеет сравнивать файлы
- Может сбрасывать данные из оперативной памяти на диск (создавать дамп)
- И другие…
- Хранит открытые файлы в памяти
Поддерживает Windows 2000 — Windows 7
Cygnus Free простой hex-редактор
Cygnus Free — это бесплатный шестнадцатеричный редактор, который является одной из старых версией коммерческого редактора. Поэтому функциональность ограничена.
- Быстрая и простая в использовании
- Быстрый поиск и замены
- Drag & drop
- И другие возможности…
- Хранит в оперативной памяти открытый файл со всеми вытекающими проблемами
- Технической поддержки у бесплатной версии нет
- Обрезана по функциональности
Поддерживает Windows
FlexHex
FlexHex – это мощный коммерческий hex-редактор от компании Heaventools Software, который включает многие из функций, доступных в Hex Editor Neo. Единственное, чего здесь нет – это, пожалуй, поддержка скриптов. Зато этот полнофункциональный редактор одинаково хорошо обрабатывает бинарники, OLE-файлы, физические диски и альтернативные NTFS-потоки. Последнее особенно важно, потому что FlexHex позволяет редактировать те данные, которые другие редакторы могут даже не увидеть. К тому же сразу чувствуется ориентированность на работу с большими массивами информации: какой бы размер ни был у файла, навигация по нему осуществляется без каких-либо лагов и тормозов. Для еще большего удобства работает система удобных закладок. При этом FlexHex непрерывно ведет историю всех операций – можно отменить любое действие, просто выбрав его из списка изменений (undo-list не ограничен)! В FlexHex поддерживаются все необходимые операции с бинарными данными, поиск ASCII и Unicode-строк. Если необходимо обрабатывать структуру с заранее известным форматом, задать ее параметры не составит труда с помощью специальных инструментов. В результате получаем отличный hex-редактор, но все-таки сильно уступающий тому же FileInsight. Единственная примечательная опция – это обработка OLE-файлов, но и тут есть проблемы. Несколько раз при попытке открыть зараженный OLE, программа вылетала с ошибкой «The docfile has been corrupted».
Хакерский редактор Hacker Viewer (Hiew) .
Для визуального восприятия шестнадцатеричного кода воспользуемся замечательным простым, но достаточно функциональным DOS редактором Hacker Viewer (Hiew). Вы найдёте его в папке D:\UTILS\HIEW\ (я надеюсь, что наш архив программ DOS-1.rar уже скачан и DOSBox установлен и запущен).
Запускаем HIEW (Hacker Viewer).
Инструкцию по пользованию Hiew для хакеров от Криса Касперского вы найдёте в папочке readme. Пользоваться редактором просто и удобно.
Откроем с помощью Hiew нашу программу PRG.COM (выбор файлов — F9). При помощи F4 выбираем режим отображения информации HEX (как вы уже знаете, шестнадцатеричный режим). Можете с помощью F4 или Enter по переключаться между режимами отображения.
Переключение режимов отображения в Hacker Viewer.
Обратите внимание на положение Decode (декодирование). Вам это ни о чём не говорит? Да, да, да в Hiew имеется встроенный дизассемблер и даже ассемблер! Можно внести изменения в ассемблерный код, не выходя из редактора и сохранить изменения. Исполняемый файл останется рабочим — гениальная программа с поразительными возможностями для своего времени!
Подобное отображение HEX системы счисления вы увидите практически во всех отладочных программах и просмотрщиках файлов. Перемещайте курсор с помощью клавиш стрелок на клавиатуре. Вверху вы заметите изменение цифры указателя (pointer).
Наша первая программа в шестнадцатеричном виде.
Указатель является одним из основополагающих понятий в системе программирования. Основы понимания работы с указателем рассмотрим попозже.
Hiew
Hiew, в плане способа распространения, мало чем отличается от своих коллег – это тоже коммерческий продукт, который разработал наш соотечественник Евгений Сусликов. Имеющая долгую историю, программа сильно полюбилась многим специалистам по информационной безопасности. Тому есть вполне очевидные причины – мощные возможности для исследования и редактирования структуры и содержания исполняемых файлов как винды (PE), так и бинарников для Linux (ELF). Другая очень полезная фича для реверсинга – встроенный x86-64 ассемблер и дизассемблер. Последний даже поддерживает инструкции ARM. Не надо говорить, что редактор отлично переваривает большие файлы и позволяет редактировать логические и физические диски. Многие задачи легко автоматизируются за счет системы клавиатурных макросов, скриптов и даже API для разработки расширений (Hiew Extrenal Modules). Но прежде чем рваться в бой, учти – интерфейс Hiew представляет собой DOS-подобное окно, работать с которым с непривычки довольно неудобно. Зато можешь прочувствовать на себе всю прелесть олдскула.
Radare
Radare – это набор бесплатных утилит для Unix-платформы, которые предоставляют классные возможности для редактирования файлов в HEX-режиме. В него входит непосредственно сам hex-редактор (radare) с возможностью открытия локальных и удаленных файлов. Программа анализирует исполняемые файлы различных форматов, как линуксовых (ELF), так и виндовых (PE). Помимо редактирования в пакете Radare есть инструмент для сравнения бинарных файлов (radiff) и встроенный ассемблер/дизассемблер. А лично мне пару раз пригодился инструмент для генерации шеллкодов (rasc). Любые операции легко можно автоматизировать и подогнать под себя за счет скриптовой системы. Из минусов, опять же, можно отметить отсутствие GUI-интерфейса – все действия осуществляются из командной строки, а полноценно работать с утилитами получится, только прочитав документацию. С другой стороны на сайте есть наглядные скринкасты, демонстрирующие как основные моменты, так и маленькие секреты (вроде подключения Python-плагина).
Особенности работы онлайн сервисов для работы с файлом
Нужно запомнить, что «HEX редактор» («редактором бинарных файлов» или «редактором байтов») обычно представляет собой компьютерную программу для работы с двоичным (бинарным) кодом. Имя «hex» является сокращением от «hexademical» (шестнадцатеричный), что связано с шестнадцатеричной системой счисления, позиционирующей цифру 16 как базис (аналогично цифре 10 в десятичной системе).
Отображение цифр от 1 до 10 в двух системах счисления
Основное назначение «HEX редакторов» — парсинг и редактирование секторов флоппи и жёстких дисков. Тем не менее указанные инструменты активно используются для анализа и редактирования содержимого множества компьютерных файлов.
По сравнению со стационарными альтернативами, HEX редактор в режиме онлайн может обладать более скромными возможностями. Обычно он работает в окне браузера, и не поддерживает файлы большого объёма. Тем не менее существуют HEX сервисы с довольно мощным функционалом, способным привлечь внимание профессионалов.
Работа с HEX онлайн строится по стандартному алгоритму. Вы переходите на такой сетевой редактор, загружаете в него файла для редактирования, выполняете изменения, после чего сохраняете на ПК полученный результат.
Перейдём к перечислению отечественных и зарубежных HEX приложениях, позволяющих отредактировать HEX файл онлайн.
Так что же выбрать?
Мы рассмотрели несколько мощных hex-редакторов, которые включают в себя полезные опции для анализа подозрительных файлов. Из всех продуктов серьезно выделяется FileInsight, который при всем своем функционале (а он действительно впечатляет) остается бесплатным. 010 Editor предоставляет большое количество шаблонов для обработки самых разных файлов, в том числе PDF-документов. Это мега-фишка, которой нельзя пренебрегать. Эти два редактора я использую постоянно; для работы аналитика, пожалуй, они подходят лучше всего. Если говорить о работе под Unix-платформой, то, конечно, нельзя забывать о Radare. Пакет предлагает очень мощные возможности, хотя и сложен в использовании из-за того, что работает из командной строки. Не очень дружелюбен и Hiew, хотя его возможности, безусловно, позволяют выполнять самые разные операции с бинарниками. К тому же, Hiew – это выбор большого количество настоящих профи, а это дорогого стоит (и многое значит). Что касается Hex Editor Neo, то его стоит взять на вооружение, если тебя интересует возможность дизассемблировать x86, x64 и .NET код.
Hex-works.com – выполнение HEX редактирования
Сетевой HEX-редактор hex-works.com представлен бета-версией продукта, доступной онлайн. Его возможности предназначены для анализа и редактирования небольших двоичных файлов (к примеру, флеш-памяти микроконтроллеров, дампов EEPROM и других сподручных альтернатив). В сервисе имеется возможность открытия, редактирования, сравнения и сохранения файлов в различных табах.
Особенностью приложения является наличие цветовой маркировки в файлах. Работа с сервисом выполняется по стандартному для таких задач алгоритму, имеется русскоязычный интерфейс.
Редактор Hex-works.com позволяет использовать цветовые схемы
INFO
Скажи, вот в каком оффлайн HEX-редакторе есть возможность коллективной работы нескольких людей? Я такого не знаю. Зато это предоставляет совершенно бесплатный онлайн-сервис hexpaste. Достаточно поделиться ссылкой на проект (например, hexpaste.com/WvwX04eV), чтобы к нему мог подключиться кто-то еще. Действует простейшая система контроля версий – каждое значимое изменение необходимо сохранить. Интерфейс очень здорово реализован на AJAX’е, поэтому складывается ощущение, что работаешь в самой обычной, но очень простой программе.