Категория: Windows: Редакторы кода
March 3, 2015
HEX-редактором называют программу, которая умеет отображать информацию так, как её "видит" компьютер, но, преобразуя двоичные числа в шестнадцатеричные. Открыв любой файл в подобном приложении, пользователь увидит матрицу, состоящую из столбцов и строк, количество коих зависит от размера рассматриваемого файла. Следовательно, если поменять значения байтов в редакторе, изменится и содержимое открытого документа.
Немного теорииЛюбые данные хранятся в памяти ПК в виде машинных слов, иначе - байтов. Каждый включает в себя 8 битов (двоичных разрядов, которые принимают значение либо "0", либо "1"). Путем математических вычислений можно понять, что в одном байте может быть записано число в диапазоне от 0 до 255. Если перевести 255 в шестнадцатеричную систему исчисления, оно преобразуется в FF. То есть для отображения любого машинного слова очень удобно использовать шестнадцатеричный вид представления. Отсюда и название группы программ - шестнадцатеричный редактор.
Основные элементы программКроме описанной выше матрицы, в интерфейсе представленной группы приложений могут быть и иные средства:
Этот HEX-редактор абсолютно бесплатен. Работает только в операционных системах семейства Windows. В продукте имеется весь джентльменский набор, такой как просмотр и редактирование файла. При этом программа обладает приятным и удобным интерфейсом.
Но стандартные функции - это минимум, для которого может быть использован FileInsight. Каков максимум? Начать надо с возможности парсинга структур исполняемых файлов. Этого мало? Любой выделенный фрагмент может быть дизассемблирован на лету. Одно нажатие - и непонятные цифры становятся читаемым листингом.
Помимо прочего, этот HEX-редатор предоставляет множество алгоритмов обработки кода для обхода встроенной разработчиками защиты. Прежде всего, нужно обратить внимание на декодирование методов обфускации, таких как add, xor, Base64, shift. Скрипты, с которыми поставляется приложение, ломают подобную криптозащиту с легкостью. Большую часть действий можно автоматизировать, написав простые сценарии на JS или Python. Иногда и создавать ничего нового не требуется, ибо база оных набрана внушительная.
Хоть FileInsight и считается одним из лучших инструментов для реверс-инжиниринга, имеется в программе и огромный недостаток - невозможность обработки файлов, превышающих 400 Мб.
Hex Editor NeoЭтот HEX-редактор распространяется в двух версиях: бесплатной и продвинутой. Продукт с freeware-лицензией - качественный, но непримечательный. Из особенностей можно выделить широкие настройки интерфейса и цветовых схем. Профессиональный вариант предоставляет больше полезных возможностей, которые особо актуальны во время анализа бинарных файлов.
Например, пользователю предоставляются возможности декодирования программ, закриптованных общими алгоритмами. Дополнительно к этому есть функции, позволяющие редактировать локальные ресурсы (оперативная память, NTFS-потоки, жесткие диски). Автоматизация процессов реализована с помощью скриптов VBS и JS.
Однако самой главной особенностью программы является дизассемблер, который может работать с x64, x86 и .NET-файлами. Еще одна функция, не предоставляемая конкурентами, - создание патча на основе сравнения двух исполняемых-бинарников. Безусловно впечатляет, но если сравнивать с FileInsight, Neo все равно проигрывает. Однако NEO может работать с файлами большого объема.
HEX-редактор Hiew не имеет бесплатной версии. Разработками занимается команда из России. Начинает свою историю продукт еще со времен 16-битных приложений для DOS и Windows 3.1. Hiew часто используют профессионалы, занимающиеся вопросами компьютерной и информационной безопасности. Причины понятны: весь спектр возможностей для редактирования и просмотра исполняемых бинарных файлов Windows, а также откомпилированных программ Linux (ELF).
Еще одна примечательная функция, помогающая в реверс-инжиниринге, - встроенные в Hiew дизассемблер и ассемблер. Причем они работают, как с x86, так и с x86_64-приложениями, поддерживаются и инструкции процессоров архитектуры ARM. С большими файлами редактор справляется без каких-либо сложностей, позволяет выполнять низкоуровневое изменение данных на физических HDD.
Большое количество действий может быть автоматизировано. Для этого программисты встроили возможность создания скриптов, клавиатурных макросов и API-функций, которые используются для вызова внутренних процедур из внешних приложений. Но до безоговорочной победы на ниве шестнадцатеричных редакторов Hiew все-таки не добрался. Его интерфейс полностью выполнен в стиле DOS, а отрисовкой окон занимается командная строка (или консоль, если говорить о Linux-системах).
Hex-редакторы
В разделе находятся программы для работы (создания, просмотра и редактирования) с двоичными (бинарными) файлами.
Hex-редактор (англ. hex-editor ) — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.
Для представления значения байтов используется шестнадцатеричная (англ. hex adecimal ) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:
Очевидно, что, например, для платформ с 9-битовым байтам использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.
Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:
Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.
Кроме этого, часто используются дополнительные элементы:
Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны.
Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки, выполнять поиск по последовательностям или шаблонам последовательностей.
Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.
ИспользованиеHex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.
Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.
Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary ) цифр.
В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные, однако так ограничивать это понятие не корректно.
ВизуализацияДля наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов, принятый на используемой платформе).
Все разделы категории Диски и файлы :
Самые популярные программы
HEX редактор позволяет по-байтово редактировать содержимое любого файла, вне зависимости от типа этого файла. В HEX редакторе данные отображаются в виде шестнадцатеричного кода, поскольку этого хватает для редактирования файлов на низком уровне, и использовать для этого, например, двоичный код не имеет смысла.
Интерфейс HEX редактора, как правило, разделен на несколько основных полей. В главном поле отображается шестнадцатеричный код в виде матрицы. Каждая ячейка матрицы соответствует одному байту. Как правило, справа от HEX-кода располагается еще одно окно, в котором отображаются те же данные, но в другом формате. Обычно, в этом поле отображается текст. Но поскольку не все байты содержат текстовые данные, то в этом поле можно видеть много больших блоков с точками ".", которые и служат для отображения не текстовых данных.
Использование таких редакторов может быть оправдано при решении широкого круга задач. Например, в уже скомпилированной программе можно поменять значение констант, без повторного компилирования. В списке ниже вы можете видеть набор HEX-редакторов. Можно скачать как платные, так и бесплатные редакторы. В функционал программы могут входить некоторые дополнительные функции.
Иногда приходится редактировать двоичные файлы. Обычные текстовые редакторы здесь не помогут. Приходится использовать шестнадцатеричные или, как их еще называют, HEX-редакторы
Размер дистрибутива: 500 Кбайт
Лицензия: Freeware
Помимо стандартных для такого рода программ возможностей редактирования, XVI32 предлагает подсчет контрольных сумм CRC16 и CRC32, поиск, замену и подсчет числа вхождений байтов в файл, а также исправление ошибки в exe-файлах Borland Pascal 7.0, из-за которой они не работают на современных процессорах. Но наиболее интересная возможность программы - это встроенный скриптовый язык. Например, вы можете записать последовательность действий для преобразования файлов Unix (перевод строки) в Windows (возврат каретки и перевод строки) или для конвертирования значка ico в курсор cur.
Интерфейс программы не отличается большим изяществом (хотя от шестнадцатеричного редактора это, наверное, и не требуется). Неудачно выбран темно-красный цвет символов для выделения блока, который трудно отличить от черного. К счастью, в настройках программы можно поставить более яркий цвет.
Набор функций данной программы включает в себя поиск и замену шестнадцатеричных значений и строк, сравнение файлов, частичную загрузку больших файлов, просмотр отдельных секторов на жестком диске (но редактирования в текущей версии нет). Файлы можно шифровать по алгоритмам DES, Blowfish, Twofish, Rijndael, Serpent. Есть также поддержка Drag and Drop в окно редактора и возможность настраивать цветовую схему.
Размер дистрибутива: 300 Кбайт
Лицензия: GPL
Консольное окно этого редактора кажется несовременным, однако по функциональным возможностям Biew опережает большинство своих конкурентов. Кроме шестандацатеричного редактора в него включены дизассемблер Intel x86 (вплоть до Presscott и Athlon 64), Java и Atmel AMR, а также текстовый просмотрщик с подсветкой синтаксиса множества языков программирования и поддержкой русских кодировок.
Редактируя двоичные файлы, можно выполнять битовые операции И, ИЛИ, НЕ, пользо-ваться поиском, встроенным калькулятором или преобразователем систем счисления. Интерфейс не совсем привычный (так, чтобы скопировать или вырезать блок в файл, нужно вручную ввести его размер), но вполне удобный. Интересно, что есть возможность группировать шестнадцатеричные коды по байтам, словам или двойным словам.
При работе в режиме дизассемблера можно проходить по вызовам CALL и переходам JMP/J*, а также возвращаться в вызывающую функцию. Многие, несомненно, оценят, что программа распознает вызовы функций из DLL и позволяет искать инструкции с применением регулярных выражений. В справке приведена краткая информация о каждой поддерживаемой инструкции процессора и ее двоичном представлении.
В Biew также включены таблица ASCII-кодов, утилита для определения скан-кодов клавиш и информация о системе. Редактор существует в версиях для DOS, OS/2, консоли Windows и Unix/Linux.
Free Hex Editor представляет собой многофункциональный редактор Hex кода. С помощью данной утилиты вы сможете легко редактировать шестнадцатеричные и бинарные файлы. Утилита является полностью бесплатной и простой у использовании. Благодаря интуитивно понятному интерфейсу, работать с данным редактором очень удобно.
В программу встроены инструменты для быстрого поиска необходимых данных в бинарных файлах. Вы можете просматривать, изменять и отлаживать любые данные. Кроме того, утилита обладает многооконным интерфейсом, позволяющим максимально использовать потенциал программы.
Редактор регулярно обновляется и вы можете всегда скачать самую последнюю версию на сайте производителя. Так же вместе с программой поставляется исчерпывающая документация, используя которую вы сможете освоить азы обращения с программой.
Основные возможности и преимущества программы:
Hex-редактор (англ. hex-editor) - приложение для редактирования данных, в котором данные представлены в виде последовательности байтов.
HxD Hex Editor 1.7.7.0 - надежный, бесплатный, но довольно мощный, шестнадцатиричный (hex) редактор бинарных файлов. Работает с файлами неограниченного размера, поддерживает все основные кодировки: ANSI, DOS/IBM-ASCII и EBCDIC, помимо редактирования обычных файлов, способен изменять данные, находящиеся в оперативной памяти, причем HxD напрямую записывает изменения на жесткий диск.
Кроме этого HxD Hex Editor обладает удобным и простым интерфейсом, мощной функцией поиска и замены, многоуровневой системой откатов.
После запуска утилиты открываем файл, где можно увидеть его содержимое в двух панелях: слева отображается шестнадцатеричный код, а справа представлено обычное текстовое содержание файла. При помощи функция "Открыть RAM", вы можете выбрать приложение в списке процессов и изменять содержимое оперативной памяти.
ПРИМЕЧАНИЕ
Рисунки на этой странице не отображаются, но вы можете найти их в книге.
То, что мы сделаем сейчас, с моей точки зрения весьма интересно. Это будет ваша первая программа в машинных кодах (и, скорее всего, единственная))).
Ассемблер – это язык низкого уровня, но все ж таки язык. А пробовали вы написать программу в машинных кодах? Сейчас попробуем.
Написать программу можно и не имея никаких ассемблеров-компиляторов и прочих инструментов – с помощью какого-либо шестнадцатеричного редактора (или hex-редактор или hex editor).
Написание программ с использованием шестнадцатеричного редактора – это не только утомительно, но и НЕБЕЗОПАСНО ДЛЯ КОМПЬЮТЕРА! Так как ошибки в процессе создания программы неизбежны. Но если TASM со товарищи проверяют текст программы на наличие ошибок, то в шестнадцатеричном редакторе проверяющий только один – вы сами. Поэтому, если ошибка останется незамеченной, файл все равно будет создан. И если вы попытаетесь этот «неправильный» файл запустить, то в лучшем случае получите зависание компьютера, а в худшем этот файл может такое натворить – вирусы отдыхают.
И все-таки разбор программ в шестнадцатеричном редакторе весьма полезен. Особенно тем, кто собирается работать с электроникой – ведь микропроцессоры не понимают ни Паскаль ни С++. Хотя и существуют специальные устройства и программы, которые им эти языки «объясняют».
Для начала вам потребуется шестнадцатеричный редактор. Вы можете использовать любой, имеющийся у вас под рукой. Однако я буду использовать уже упоминавшийся McAfee FileInsight v2.1. Этот hex-редактор можно скачать бесплатно. Все описанные ниже действия справедливы именно для этого редактора.
Итак, шестнадцатеричный редактор у вас установлен. Запускаем его. Щелкаем по кнопке ОТКРЫТЬ, находим один из созданных нами СОМ-файлов, например, debug_1.com, и загружаем его в редактор.
Когда файл загружен, в редакторе вы увидите следующее (см. также рис. 1.12): Можете открыть два других созданных нами файла: mycode.com (созданный в emu8086) или ATEST.COM (который мы создали в разделе MASM, TASM и WASM ). Увидите то же самое. Это значит, что все ассемблеры создают одинаковый машинный код. То есть отличия в тексте программ не являются принципиальными – они обусловлены только отличиями самих ассемблеров.
ПРИМЕЧАНИЕ
Если в вашем случае вы видите другую картину, то либо вы открыли другой файл, либо просматриваете его в текстовом режиме. В последнем случае нажмите кнопку View as Hex на панели инструментов (см. рис. 1.12).
Что же означают эти числа?
С нулями все понятно – это первая ячейка памяти, в которую записано число В4. Это число потом будет записано в адрес 0100h (для СОМ-файла). В строке должно быть 16 чисел, каждое из которых состоит из двух цифр. Числа записываются в шестнадцатеричной форме. Но у нас программа маленькая – всего 8 байт, поэтому и чисел у нас 8.
Ну а что же такое B4? Это команда – «Ввести значение в регистр АН». А какое значение вводим? Правильно: 02 (следующее в строке число).
Идем дальше. Команда B2 – «ввести значение в регистр DL». Какое значение? Конечно 41. А теперь вспомним, что мы увидели в программе Debug, введя команду t: Видите в последней строке B241? Знакомое сочетание? Это код команды MOV DL, 41.
Идем дальше. CD – код вызова прерывания. Какого? Смотрим следующее число. Итак, CD 21 – это код команды INT 21. Аналогично для CD 20.
Осталось разобраться с загадочными символами в конце строки. А здесь все просто: каждая цифра в числе соответствует коду символа таблицы ASCII, и эти символы выводятся в той же последовательности, что и шестнадцатеричные цифры. В этом тексте вместо некоторых символов стоят точки (.) – это просто коды не буквенных символов.
Ну а теперь напишем и создадим нашу изученную вдоль и поперек программу без ассемблеров и компоновщиков. Открываем редактор, создаём новый файл (для этого щёлкаем кнопку NEW на панели инструментов), затем щёлкаем кнопку View as Hex и вводим данные: Сохраняем файл под именем, например, hex_1.com. Все. Программа готова. Теперь ее можно запустить и в очередной раз полюбоваться своим творением. Результат будет тот же, что и во всех предыдущих случаях.
И ещё один приятный сюрприз от редактора McAfee FileInsight v2.1 – он имеет свой дизассемблер! Если вы загрузите в редактор исполняемый файл, а в левом нижнем углу выберите вкладку DISASSEMBLY, то сможете посмотреть исходный код загруженной программы на языке ассемблера (рис. 1.12).
Зачем вообще нужны шестнадцатеричные редакторы и дизассемблеры? Ведь это так сложно. Да, это непросто. Однако хакеры так не думают. Именно с помощью шестнадцатеричных редакторов и дизассемблеров они ломают программы. Находят в коде нужные им места и исправляют их в соответствии со своими хакерскими капризами.
Конечно, мы не хакеры. Ломать программы не будем. Однако дизассемблеры и шестнадцатеричные редакторы весьма полезны и законопослушными программистам. Они используются, например, для отладки, для изучения машинных кодов и т.п. Например, вы знаете, как выглядит команда на языке ассемблера, но хотите узнать её машинный код. Если нет документации, то выход только один – шестнадцатеричный редактор и/или дизассемблер. Следует, однако, учесть, что не все команды умещаются в машинный код из двух чисел. Некоторые команды довольно сложные и требуют большего количества чисел для представления в машинных кодах.
Flashback Редакторы 16-ый редактор. hex editor. HEX-редактор. WinHex. X-Ways. шестнадцатеричный редактор
Последняя версия: 16.1 SR-1
Автор: X-Ways
Если вы и могли слышать о каком-либо шестнадцатеричном редакторе, так это об WinHex, ибо данному программному продукту уже ни один год (если быть точнее, то уже 16 лет), а за это время он успел многим себя зарекомендовать. Например, корпорация Microsoft является лицензионным пользователем данного HEX-редактора.
WinHex может работать сразу после распаковки крошечного архива размером около полутора мегабайт, хотя его можно и установить, запустив файл setup.exe, находящийся в архиве. Возможностей у этого великовозрастного шестнадцатеричного редактора более чем достаточно. Вот часть из них:
3) быстрый поиск с использованием различных фильтров.
4) работа с файлами крупнее 4 гигабайт.
5) многое другое.
Если вы решили или уже начали заниматься реверсингом, русификацией программ и тому подобным, то обязательно скачайте HEX-редактор WinHex.