В данной статье будет рассказано о работе в бесплатном hex-редакторе Free Hex Editor Neo, на примере правки файла BkEnd.dll из поставки 1С:Предприятие 7.7 для корректной работы этой системы с Microsoft SQL Server 2008 R2.
0. Оглавление
- Немного о hex-редакторах и файлах
- Установка Free Hex Editor Neo
- Работа с файлом hex-редакторе
1. Немного о hex-редакторах и файлах
Как известно, любой файл, хранясь на жестком диске компьютера, представляет собой последовательность машинных слов — байтов. Байт, в свою очередь, состоит из 8 битов, каждый из которых может принимать значение «0» или «1» , а это означает, что один байт может принимать 28=256 значений в диапазоне от 0 до 255. Число 25610, записанное в шестнадцатеричной системе, является круглым трёхзначным числом — 10016, т. е. для представления любого числа из диапазона 0—255 потребуется не более 2 разрядов. А это значит, что значение каждого байта очень удобно записать двузначным числом в шестнадцатеричной системе счисления.
Hex-редактор (англ. hex-editor) показывает нам файл, так, как его «видит» машина, а именно, последовательностью байтов. Например, открыв файл в редакторе, мы увидим матрицу, состоящую из 16 колонок и числа строк зависящего от размера файла. Каждое значение матрицы соответствует одному байту, записанному двузначным шестнадцатеричным числом. Изменяя значение нужного байта, мы можем, соответственно, изменить сам файл.
Кроме того, рядом с таблицей можем увидеть:
- Слева от матрицы отображается линейка из чисел: каждой строчке соответствует число, означающее адрес/смещение первого байта этой строчки. Шаг адресов при этом равен количеству колонок.
- Сверху от матрицы отображается другая линейка: над каждой колонкой отображается смещение байта, стоящего в этой колонке, относительно первого байта соответствующей строчки. Сумма числа, соответствующего
i
-той строке, и числа, соответствующегоj
-той колонке является адресом/смещением байта(i;j)
, стоящего на пересечении взятой строки и взятого столбца. - Справа от матрицы отображаются те же данные, но в другой интерпретации. Чаще всего используется альтернативное отображение данных как текста в кодировке ASCII , при этом байты, значения которых соответствуют непечатным символам, отображаются как точки (
·
). Редактировать значения можно и в этой области.
Подробнее о Hex-редакторах можно прочитать здесь.
2. Установка Free Hex Editor Neo
Скачиваем Free Hex Editor Neo с официального сайта. Программа бесплатна, на момент написания статьи последней была версия 5.14. Устанавливаем, следуя инструкциям инсталлятора, не меняя настроек по умолчанию. При первом запуске программа предложит выбрать режим интерфейса. Выбираем «Novice user» , этого более чем достаточно.
3. Работа с файлом hex-редакторе
Теперь откроем файл, который нам необходимо «подправить» выбрав «File» — «Open» — «Open File» в меню Free Hex Editor Neo. В моем случае это файл BkEnd.dll, находящийся в папке с установленной 1С:Предприятие 7.7 (По умолчанию «C:Program Files1Cv77BIN» ) для статьи Установка 1С:Предприятие 7.7 на Microsoft SQL Server 2008 R2.
Например, мне нужно в байт со смещением 000d9cca записать значение eb. Для этого я нахожу строку «000d9cco» и столбец «0a», кликаю два раза по нужной ячейке и забиваю новое значение.
Действуя аналогично, я вношу следующие изменения:
- Для исправления ошибки «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!» изменяем поля:
по смещению 000d9cca значение 83 меняем на eb
по смещению 000d9ccb значение e8 меняем на 15
по смещению 000db130 значение 83 меняем на eb
по смещению 000db131 значение e8 меняем на 10 - Для исправления ошибки «Порядок сортировки, установленный для базы, отличается от системного!»:
по смещению 0018a79d значение 75 меняем на eb - Для исправления ошибки «Неправильный синтаксис около ключевого слова «TRANSACTION»
Фразу DUMP TRANSACTION %s WITH TRUNCATE_ONLY , которая находится по смещению 002856B0 заменяем на фразу ALTER DATABASE %s SET RECOVERY SIMPLE - Для исправления ошибки «База данных не может быть открыта в однопользовательском режиме», изменяем поля:
по смещению 0028549c значение 64 меняем на 6b
по смещению 0028549d значение 62 меняем на 70
После того, как все изменения сделаны, сохраним файл, нажав «File» — «Save» .
Запись опубликована в рубрике 1С 7, Софт сисадмину с метками 1Сv7, SQL, Бесплатно, Софт. Добавьте в закладки постоянную ссылку.
Иногда возникает необходимость внести изменения в двоичный файл. Для этого используются так называемые hex-редакторы. Цель данного руководства – описать основные методы работы с ними и ответить на наиболее часто задаваемые вопросы.
Выбор редактора
Самым первым обычно возникает вопрос: какой редактор из всего многообразия существующих выбрать. Для изменения нескольких байт можно cмело использовать любой, но при частом или длительном использовании программа должна поддерживать все требуемые функции, быть удобной, быстрой и надежной. Исходя из этого можно рекомендовать к использованию, например, QView. Кроме перечисленных выше cвойств, он обладает следующими:
- Работает в DOS и Windows
- Содержит встроенные ассемблер и дизассемблер
- Поддерживает кодировки текста DOS-866, Win-1251, KOI-8r и определяемые пользователем
- Имеет широкие возможности настройки
- Является бесплатным с открытыми исходными кодами
Скачать его можно на домашней странице проекта: http://www.agcproduct.com/rus/products/qview/.
Основное окно QView состоит из заголовка (вверху), рабочей области и панели функциональных клавиш (внизу). Для управления используются клавиатура и мышь. QView позволяет работать с данными в текстовом режиме, режиме шестнадцатеричного дампа и режиме дизассемблера. Режимы последовательно переключаются нажатием Enter или F4 (или щелчком левой кнопки мыши по заголовку в области расположения символов AV/HV/00). Режимы просмотра и редактирования переключаются нажатием Alt-F3 (в текстовом режиме – просто F3). Устанавливаемые после запуска режимы зависят от настроек, которые хранятся в файлах qview.ini, qview.fmg, qview.ehl и для изменения которых в составе пакета есть специальная программа – Q-Setup. Контекстная справка по используемым клавишам вызывается нажатием F1.
Открыть файл в редакторе можно передав его имя в качестве параметра командной строки: qview.exe <filename.ext> (в Windows длинные имена файлов необходимо заключать в двойные кавычки) либо через файловую панель, которая вызывается нажатием Alt-F6 или щелчком мыши по имени файла в заголовке. Для выхода из редактора следует нажать Escape.
Простейшее редактирование
Самая простая задача при редактировании двоичных файлов: заменить значение байта по смещению XXXXХХХХ значением YY. Для этого после открытия файла в редакторе необходимо нажатием Enter переключить вид в режим дампа. В рабочей области в левой колонке указано значение смещения, в центральной части – значения байт в шестнадцатеричном виде, справа – те же значения в виде символов ASCII.
Для установки курсора по требуемому смещению требуется нажать клавишу F5 (или щелкнуть в заголовке мышью по ряду цифр, выделенному красным цветом), ввести значение смещения и нажать Enter. Если режим редактирования не был включен, то следует нажать Alt-F3 (при этом в панели клавиш появится надпись “Edit ON”). После этого можно вносить изменения в файл, набирая значения байт в шестнадцатеричном виде или, переместив курсор в правую колонку нажатием TAB, в виде символов. Курсор позиционируется с помощью обычных клавиш управления или мышью.
Для отмены сделанных изменений cледует установить курсор в месте ошибки и несколько раз нажать F3. Сохранить изменения можно при выходе, нажав W, или принудительно, нажав Alt-F9.
Поиск и замена
QView поддерживает поиск в файле определенных байт или строк и поиск по маске. Диалоговое окно поиска вызывается нажатием F7. В поле ASCII можно ввести строку в виде символов, а в поле HEX – в шестнадцатеричном виде. Щелчком мыши можно указать направление поиска (“Forward/Backward”), включить опции различения регистра символов для символьного поиска (“Sensitive”) или поиск по маске (“Masking”). В последнем случае символ ‘?’ маскирует соответствующий байт в строке. Например, при поиске “w?r?” будут найдены слова worm, warm, were и т.п. При нажатии Shift-F7 выполняется поиск следующего совпадения.
Для выполнения поиска с заменой необходимо нажать Ctrl-F7. В верхней части окна вводится строка или шаблон для поиска, в нижней – заменяющая строка.
Создание и использование crack-файлов
Crack-файлы являются самым распространенным способом записи изменений в двоичных файлах. В стандартном формате они состоят из трех колонок: смещения относительно начала редактируемого файла, значения байта до изменения и его значения после изменения:
00000150: 89 B8 00000151: 1E 03 00000152: F6 00 00000153: 10 CD 00000154: 83 10
Иногда в начало добавляется комментарий, начинающийся с символа ‘#’.
В QView для сохранения внесенных в файл изменений в виде crack-файла необходимо нажать Shift-F9, ввести в открывшемся окне имя файла и нажать Enter. Для внесения изменений из готового crack-файла cледует нажать Ctrl-F8, пропустить открывшемся окно, нажав Enter (в нем можно задать дополнительное смещение, что используется редко), в следующем окне ввести имя crack-файла и снова нажать Enter. Важное замечание: сразу после этого изменения будут записаны в файл и он будет автоматически сохранен. Переключать программу в режим редактирования не обязательно. Если при внесении изменений выводится сообщение об ошибке, значит, либо формат файла не соответствует стандартному, либо патч не подходит к файлу (байты “до изменения” не совпадают).
Работа с блоками
Иногда возникает потребность сохранить часть двоичного файла, например, скопировать из него текстовые строки. Для работы с блоками редактор должен находиться в режиме дампа или дизассемблера. Для выделения требуемого блока следует установить курсор в его начало, нажать клавишу Insert, затем установить курсор в конец блока и снова нажать Insert. При этом блок выделяется желтым цветом.
Для сохранения блока в файл необходимо нажать Shift-F2, в появившемся окне указать имя и формат сохраняемого файла (в виде кода – “как есть”, дампа или ассемблерного текста) и нажать Enter.
При вставке блока из файла следует аналогичным образом выделить блок, нажать Shift-F3 и в открывшемся окне указать имя файла-источника. При этом размер выделенного блока должен быть равен или меньше размера файла. Альтернативный вариант: установить курсор в позицию, начиная с которой должна быть произведена вставка, нажать Shift-F5 и в открывшемся окне указать имя файла-источника, смещение и длину блока внутри него, откуда требуется взять данные.
Чтобы удалить блок следует отметить его и нажать Shift-F4 или установить курсор в нужную позицию, нажать Ctrl-F5 и указать число удаляемых байт. Для вставки заполненного нулями блока в текущую позицию cледует нажать Ctrl-F4 и указать размер блока. Удалить файла до конца начиная с текущей позиции можно нажав Alt-F10.
При вставке блока, как и в случае с crack-Файлами, изменения сохраняются cразу после внесения.
Ассемблирование и ассемблерный поиск
Ассемблирование используется для внесения изменений в алгоритм работы исполнимых файлов. QView поддерживает все команды процессоров Intel 486 и 487. В режиме ассемблера и дизассемблера в рабочей области редактора в первой колонке указано смещение относительно начала файла, во второй – байты инструкции, в третьей – ee мнемоническое обозначение. Для включения режима ассемблирования следует перевести редактор в режим дизассемблера, нажав несколько раз Enter, включить режим редактирования, нажав Alt-F3, и нажать TAB для перемещения курсора в третью колонку. После этого можно вводить инструкции, завершая ввод каждой нажатием Enter.
При необходимости можно, как и в режиме дампа, изменять непосредственно байты во второй колонке. Разрядность кода 16/32 переключается нажатием F2. Отменить изменения можно установив курсор на строку с ошибкой и несколько раз нажав F3.
Для поиска конкретных ассемблерных инструкций следует нажать F6, ввести инструкцию и нажать Enter. Поиск следующего совпадения производится нажатием Shift-F6. Для поиска по шаблону можно использовать следующие специальные символы:
‘?’ – любой один символ
‘*’ – любая подстрока до запятой или до конца строки
‘$’ – поиск числовых констант (ставится перед числом)
‘%’ – пропуск одного слова
‘@’ – любая подстрока
Например, “sub bx,*” – поиск всех инструкций вычитания из регистра BX.
Дополнительные функции
Из полезных дополнительных функций QView можно отметить наличие встроенного калькулятора, который вызывается при нажатии Ctrl-F6. Он поддерживает основные арифметические и логические поразрядные операции, скобки для указания приоритета операций, ввод аргументов и вывод результата в системах счисления с основанием 2, 8, 10, 16.
Просмотреть информацию из заголовка исполнимого файла можно нажав F8 в режиме дампа или дизассемблера. Поддерживаются файлы форматов MZ, PE, NE, LX, LE.
BestIdler
Знаток
(431),
на голосовании
7 лет назад
Как найти последовательность данных, точнее последовательность ячеек с содержащимися в них данными в hex-редакторе (и в каком лучше). Пример: файл размером в несколько мегабайт. В файле есть данные – дата создания файла, время начала записи файла, время конца записи, табельный номер человека производившего запись, его фамилия и инициалы. Строка в hex-редакторе выглядит как :
07 00 00 00 00 28 30 11 03 13 09 15 00 10 95 FA 6E – где 13 09 15 – это 13.09.15 дата, а 28 30 11 – это 11часов 30минут 28 секунд – начало записи файла. Необходимо найти и отредактировать время конца записи файла (он где-то в середине файла). Он известен и представлен в таком же виде. Как его найти?
Голосование за лучший ответ
- 2 Фев 2006
Как найти нужную ячейку в NEX редакторе?
Нужно прочитать содержимое конкретного адреса.Для примера адрес 0025, и его содержимое в десятичном формате.Разжуйте пожалуйста…
- 6 Фев 2006
Если в NEX редакторе, то зачем тебе десятичный формат – все цифры шеснадцатеричные (HEX), если надо переведи в десятичные в калькуляторе.
Твоя строка (если в HEX формате) будет выглядеть так:
…….
0020 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0030 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
…….
…….
0020 – адрес, значения в 16-ти ячейках произвольные, но я поставил в них адреса которым они соответствуют.
Твоя ячейка с адресом 0025 – имеет значение 05 .
Если еще непонятно то:
0020 00
0021 01
0022 02
0023 03
0024 04
0025 05 – она твоя
0026 06
0027 07
0028 08
0029 09
002A 0A
002B 0B
002C 0C
002D 0D
002E 0E
002F 0F
и т.д.
Всего доброго.
- 6 Фев 2006
Более наглядно
- 20 Фев 2006
Спасибо! Поковырялся,разобрался,нашел где ” собака зарыта “.
- 23 Окт 2006
Где можно скачать nex редактор.
- 23 Окт 2006
Bano, наверно не “nex редактор”, а HEX-редактор …
Их в инете полно, найди через поисковик.
- 29 Окт 2006
А может скажеш где скачать. Сижу 3 дня и не нашёл.
- 29 Окт 2006
Bano, ссылка скрыта от публикации
- 29 Окт 2006
ИМХО, WinHex один из самых лучших. Или в гугле – “hex editor”, к примеру
- 29 Окт 2006
- 29 Окт 2006
voldemar71, UltraEdit-32 лучше, и весит не очень много
- 30 Окт 2006
Vasilij, каждому своё. я, вообще юзал windhex32 – простой, маленький, бесплатный и не требует инсталляции, при этом имеет много чего полезного (для своих размеров). В некоторых довольно УЗКИХ кругах он находит достаточно ШИРОКОЕ применение, например, при переводе приставочных игр…
- 30 Окт 2006
voldemar71, я имел ввиду- больше функций, хотя и WinHex тоже присутствует, смотря для чего. Когда на верстакЕ лежит пара молотков, и они не мешают друг другу, то пусть будут
- 30 Окт 2006
Vasilij, хорошая штука . Пришлось, правда, сходить ссылка скрыта от публикации (да простят меня модераторы) – платный, зараза
- 30 Окт 2006
понятно , я его брал где то в более приличном месте…
Есть еще MultiEdit, проггеры хвалят, но он где то под 30 МВ, и я его на своем мопеде не разыскивал..
- 31 Окт 2006
- 31 Окт 2006
Aliaksandr, да дело не в инструкции, а в самой проге, качать модемом долго , да и указанных двух в принципе пока хватает.
- 31 Окт 2006
Vasilij, Напишите конкретную ссылку для скачивания,
Я скачаю и выложу в обменник Программы.
- 31 Окт 2006
Aliaksandr,
a) я знаю где он лежит(или лежал), и мог(у) взять прямо оттуда;
б) у него размер, если не изменяет память, около 26 МЕГАБАЙТ , это довольно приличный объем
как для обменника, так и для большинства пользователей, которые сидят на модемах.
в)тематика этого софтА не совсем отвечает тематике форума, к тому же, он платный см:
https://monitor.net.ru/forum/threads/44817/
так что спасибо, не нужно .
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».
Простейшее редактирование
Самая простая задача при редактировании двоичных файлов: заменить значение байта по смещению XXXXХХХХ значением YY. Для этого после открытия файла в редакторе необходимо нажатием Enter переключить вид в режим дампа. В рабочей области в левой колонке указано значение смещения, в центральной части — значения байт в шестнадцатеричном виде, справа — те же значения в виде символов ASCII.
Для установки курсора по требуемому смещению требуется нажать клавишу F5 (или щелкнуть в заголовке мышью по ряду цифр, выделенному красным цветом), ввести значение смещения и нажать Enter. Если режим редактирования не был включен, то следует нажать Alt-F3 (при этом в панели клавиш появится надпись «Edit ON»). После этого можно вносить изменения в файл, набирая значения байт в шестнадцатеричном виде или, переместив курсор в правую колонку нажатием TAB, в виде символов. Курсор позиционируется с помощью обычных клавиш управления или мышью.
Для отмены сделанных изменений cледует установить курсор в месте ошибки и несколько раз нажать F3. Сохранить изменения можно при выходе, нажав W, или принудительно, нажав Alt-F9.
Существует две версии этого шестнадцатеричного редактора от компании HDD Software – простая бесплатная и продвинутая коммерческая версия. Freeware-вариант – это добротный, но мало чем примечательный HEX-редактор, имеющий классный настраиваемый интерфейс с поддержкой разных цветовых схем. Не более того. А вот профессиональная версия Hex Editor Neo предоставляет несколько полезных опций, которые могут быть крайне полезны при анализе бинарников. К примеру, пользователь получает возможность декодирования кода, закриптованного с помощью наиболее общих алгоритмов. Помимо этого появляется возможность просмотра и редактирования локальных ресурсов типа NTFS-потоков, локальных дисков, памяти процесса, а также оперативки. В самой полной версии появляется и поддержка скриптового языка, позволяющая автоматизировать многие процессы с помощью сценариев на VBScript и JavaScript. Но самый смак в том, что к твоим услугам предоставляется встроенный дизассемблер, который работает и с x86, и с x64, и с .NET-бинарниками! Еще одна фича – быстрое создание патчей, основанное на сравнении двух бинарников. Звучит впечатляюще, но лучше ли он, чем FileInsight? Скорее, нет. FileInsight в целом выглядит более функционально. С другой стороны, любая, даже бесплатная версия Hex Editor Neo отлично работает даже с очень большими файлами и позволяет искать ASCII и Unicode-строки. Дизассемблер здесь не ограничивается одной лишь x86 платформой, а встроенный редактор ресурсов очень удобен. Есть над чем подумать.
Дескрипторы
Все файлы можно грубо говоря разделить на две составляющие – заголовок, где содержатся данные идентификации объекта, различные метаданные. Вторая составляющая – «тело» объекта, с помощью которого определяется тип объекта и части заголовка, имеющего название дескриптора. Два популярных дескриптора – ASCII и HEX. Второй вариант анализируется при помощи редакторов, о которых было сказано в начале.
Первый метод ASCII определяется с помощью текстового редактора, например, Notepad++, правда, стоит учесть один момент – некоторые наборы байтов не удастся преобразовать в формат ASCII, а значит рекомендуется применять HEX-редакторы. Запустив любой файлик с помощью такой утилиты, в окне отобразится вид матрицы с последовательностью байтов, где один байт содержится в одной из ячеек. Сведения о дескрипторе обычно находятся в первых 3-х ячейках, редко в большем количестве. Ячейки считаются по горизонтали. Данные, отображённые в ячейках представлены в виде шестнадцатеричном коде.
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».
Поиск и замена
QView поддерживает поиск в файле определенных байт или строк и поиск по маске. Диалоговое окно поиска вызывается нажатием F7. В поле ASCII можно ввести строку в виде символов, а в поле HEX — в шестнадцатеричном виде. Щелчком мыши можно указать направление поиска («Forward/Backward»), включить опции различения регистра символов для символьного поиска («Sensitive») или поиск по маске («Masking»). В последнем случае символ ‘?’ маскирует соответствующий байт в строке. Например, при поиске «w?r?» будут найдены слова worm, warm, were и т.п. При нажатии Shift-F7 выполняется поиск следующего совпадения.
Для выполнения поиска с заменой необходимо нажать Ctrl-F7. В верхней части окна вводится строка или шаблон для поиска, в нижней — заменяющая строка.
Hiew
Hiew, в плане способа распространения, мало чем отличается от своих коллег – это тоже коммерческий продукт, который разработал наш соотечественник Евгений Сусликов. Имеющая долгую историю, программа сильно полюбилась многим специалистам по информационной безопасности. Тому есть вполне очевидные причины – мощные возможности для исследования и редактирования структуры и содержания исполняемых файлов как винды (PE), так и бинарников для Linux (ELF). Другая очень полезная фича для реверсинга – встроенный x86-64 ассемблер и дизассемблер. Последний даже поддерживает инструкции ARM. Не надо говорить, что редактор отлично переваривает большие файлы и позволяет редактировать логические и физические диски. Многие задачи легко автоматизируются за счет системы клавиатурных макросов, скриптов и даже API для разработки расширений (Hiew Extrenal Modules). Но прежде чем рваться в бой, учти – интерфейс Hiew представляет собой DOS-подобное окно, работать с которым с непривычки довольно неудобно. Зато можешь прочувствовать на себе всю прелесть олдскула.
Создание и использование crack-файлов
Crack-файлы являются самым распространенным способом записи изменений в двоичных файлах. В стандартном формате они состоят из трех колонок: смещения относительно начала редактируемого файла, значения байта до изменения и его значения после изменения:
00000150: 89 B8 00000151: 1E 03 00000152: F6 00 00000153: 10 CD 00000154: 83 10
Иногда в начало добавляется комментарий, начинающийся с символа ‘#’.
В QView для сохранения внесенных в файл изменений в виде crack-файла необходимо нажать Shift-F9, ввести в открывшемся окне имя файла и нажать Enter. Для внесения изменений из готового crack-файла cледует нажать Ctrl-F8, пропустить открывшемся окно, нажав Enter (в нем можно задать дополнительное смещение, что используется редко), в следующем окне ввести имя crack-файла и снова нажать Enter. Важное замечание: сразу после этого изменения будут записаны в файл и он будет автоматически сохранен. Переключать программу в режим редактирования не обязательно. Если при внесении изменений выводится сообщение об ошибке, значит, либо формат файла не соответствует стандартному, либо патч не подходит к файлу (байты «до изменения» не совпадают).
Radare
Radare – это набор бесплатных утилит для Unix-платформы, которые предоставляют классные возможности для редактирования файлов в HEX-режиме. В него входит непосредственно сам hex-редактор (radare) с возможностью открытия локальных и удаленных файлов. Программа анализирует исполняемые файлы различных форматов, как линуксовых (ELF), так и виндовых (PE). Помимо редактирования в пакете Radare есть инструмент для сравнения бинарных файлов (radiff) и встроенный ассемблер/дизассемблер. А лично мне пару раз пригодился инструмент для генерации шеллкодов (rasc). Любые операции легко можно автоматизировать и подогнать под себя за счет скриптовой системы. Из минусов, опять же, можно отметить отсутствие GUI-интерфейса – все действия осуществляются из командной строки, а полноценно работать с утилитами получится, только прочитав документацию. С другой стороны на сайте есть наглядные скринкасты, демонстрирующие как основные моменты, так и маленькие секреты (вроде подключения Python-плагина).
Расширение файла
Проблема заключается в огромном количестве типов файлов и поначалу не ясно, каким образом операционная система определяет текстовые, мультимедийные или архивные и прочие типы данных. Как известно, определение файла системой осуществляется с помощью расширения, добавляемого после названия, например, «.exe», «.txt» и другие.
Настройки в ОС гибкие, а значит расширение любого файла можно удалить, но тогда операционная система не сможет открыть его, она не поймет, с помощью какой программы его запустить. При этом логическая структура объекта не изменится. На изображении видно текстовый файл, а рядом с ним тот же самое, но без расширения и иконка у него белая.
Если объект без расширения остается тем же самым файлом с логическим набором символом, значит расширение не определяет его тип, но тогда что? Есть такое понятие, как формат
– это и определяет тип, также это есть спецификация структуры данных. Расширение же совершенно другой термин. А что делать, если пользователю изначально попался файл без расширения, но его срочно нужно открыть, а чем – неизвестно?
Так что же выбрать?
Мы рассмотрели несколько мощных hex-редакторов, которые включают в себя полезные опции для анализа подозрительных файлов. Из всех продуктов серьезно выделяется FileInsight, который при всем своем функционале (а он действительно впечатляет) остается бесплатным. 010 Editor предоставляет большое количество шаблонов для обработки самых разных файлов, в том числе PDF-документов. Это мега-фишка, которой нельзя пренебрегать. Эти два редактора я использую постоянно; для работы аналитика, пожалуй, они подходят лучше всего. Если говорить о работе под Unix-платформой, то, конечно, нельзя забывать о Radare. Пакет предлагает очень мощные возможности, хотя и сложен в использовании из-за того, что работает из командной строки. Не очень дружелюбен и Hiew, хотя его возможности, безусловно, позволяют выполнять самые разные операции с бинарниками. К тому же, Hiew – это выбор большого количество настоящих профи, а это дорогого стоит (и многое значит). Что касается Hex Editor Neo, то его стоит взять на вооружение, если тебя интересует возможность дизассемблировать x86, x64 и .NET код.
Что еще можно делать с помощью HEX-редактора
Помимо того, что HEX-редакторы помогают проанализировать любой файл, возможно:
- работать с дисковыми образами;
- редактировать разделы;
- изменять содержимое ОЗУ;
- изменять виртуального адресного пространства процесса и прочее.
К примеру, утилиты подобного типа используют в разработке ПО. Когда необходимо внести данные уже после компиляции программы, но перекомпилировать ее не хочется. Любой код программы можно изменить с помощью HEX-редактора. Конечно, это нужно уметь делать, находить нужные данные. Таким образом, добиваются исправления ошибок в коде, либо используют для взлома и читерства. Это значит, применение HEX-редакторов очень широкое.
INFO
Скажи, вот в каком оффлайн HEX-редакторе есть возможность коллективной работы нескольких людей? Я такого не знаю. Зато это предоставляет совершенно бесплатный онлайн-сервис hexpaste. Достаточно поделиться ссылкой на проект (например, hexpaste.com/WvwX04eV), чтобы к нему мог подключиться кто-то еще. Действует простейшая система контроля версий – каждое значимое изменение необходимо сохранить. Интерфейс очень здорово реализован на AJAX’е, поэтому складывается ощущение, что работаешь в самой обычной, но очень простой программе.
Работа с блоками
Иногда возникает потребность сохранить часть двоичного файла, например, скопировать из него текстовые строки. Для работы с блоками редактор должен находиться в режиме дампа или дизассемблера. Для выделения требуемого блока следует установить курсор в его начало, нажать клавишу Insert, затем установить курсор в конец блока и снова нажать Insert. При этом блок выделяется желтым цветом.
Для сохранения блока в файл необходимо нажать Shift-F2, в появившемся окне указать имя и формат сохраняемого файла (в виде кода — «как есть», дампа или ассемблерного текста) и нажать Enter.
При вставке блока из файла следует аналогичным образом выделить блок, нажать Shift-F3 и в открывшемся окне указать имя файла-источника. При этом размер выделенного блока должен быть равен или меньше размера файла. Альтернативный вариант: установить курсор в позицию, начиная с которой должна быть произведена вставка, нажать Shift-F5 и в открывшемся окне указать имя файла-источника, смещение и длину блока внутри него, откуда требуется взять данные.
Чтобы удалить блок следует отметить его и нажать Shift-F4 или установить курсор в нужную позицию, нажать Ctrl-F5 и указать число удаляемых байт. Для вставки заполненного нулями блока в текущую позицию cледует нажать Ctrl-F4 и указать размер блока. Удалить файла до конца начиная с текущей позиции можно нажав Alt-F10.
При вставке блока, как и в случае с crack-Файлами, изменения сохраняются cразу после внесения.
Выводы
Упомянутые выше HEX редакторы Linux, достаточно часто используются владельцами компьютеров, работающих под этой операционной системой. Некоторые из них более популярны среди специалистов — программистов и разработчиков. Другие приходятся по вкусу тем, кто пользуется подобным ПО лишь от случая к случаю. Тем не менее, можно сказать, что все они достаточно гибкие и функциональные для того, чтобы удовлетворить потребности всех пользователей.
Похожие записи:
Нет похожих записей
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
WinHex
Начнем с «ВинХекса» – довольно простого в пользовании, но универсального шестнадцатеричного редактора. Он работает практически со всеми видами файлов, способен восстанавливать удаленные и поврежденные данные с жесткого диска. Кроме того, он позволяет просматривать информацию, которую многие программы обычно скрывают.
Icebuddha.com – HEX вьювер и парсер
И последний сетевой HEX-сервис, о котором я хочу рассказать – это icebuddha.com. Это не столько редактор, сколько простой и удобный hex-вьювер и парсер бинарных файлов с открытым исходным кодом, работающий в вашем браузере. Поскольку «IceBuddha» работает в браузере, то ваши файлы не будут загружены на сторонний ресурс. Для парсинга здесь используется удобный скрипт Python.
Просмотр файлов с помощью Icebuddha.com
HexCmp
У этой программы есть сразу две важные особенности. Она использует шестнадцатеричную систему и способна сравнивать двоичные файлы. Имеет расширенные функции, такие как цветовое выделение и синхронная прокрутка, а также обладает панелью, содержащей информацию о записях в различных форматах.
UltraEdit
На очереди еще одна простая и удобная программа. Среди ее главных плюсов – способность открывать и изменять крупные файлы от 4 Гб и выше. Она также имеет возможности для шестнадцатеричного редактирования и подсветки кода многих языков программирования.
Дополнительные функции
Из полезных дополнительных функций QView можно отметить наличие встроенного калькулятора, который вызывается при нажатии Ctrl-F6. Он поддерживает основные арифметические и логические поразрядные операции, скобки для указания приоритета операций, ввод аргументов и вывод результата в системах счисления с основанием 2, 8, 10, 16.
Просмотреть информацию из заголовка исполнимого файла можно нажав F8 в режиме дампа или дизассемблера. Поддерживаются файлы форматов MZ, PE, NE, LX, LE.
Сейчас будет большой материал на тему того, из чего состоят данные и как их можно редактировать. Многие знают, что любой файл на компьютере (картинка, текстовый или мультимедийный) представляет собой двоичный код – нули и единицы. Для редактирования таких файлов используются HEX-редакторы – приложение, редактирующее данные, состоящие из байтового кода. Байты в редакторе представлены в виде шестнадцатеричной системы.
Двоичная система счисления — основа мироздания.
Вы помните Даосский символ Инь и Янь? Он состоит из двух цветов, из двух понятий: чёрного и белого, мужского и женского, единицы и нуля. Согласно Даосской философии весь мир сформирован именно с помощью двух противоположных
и вместе с тем неразделимых понятий. Просто поражает гениальность древних мудрецов. С помощью единиц и нулей человек создаёт множество цифровых миров. Год от года они становятся всё более реалистичными. Интересно, догадывается
ли герой компьютерной игры, что весь его мир состоит всего из двух цифр или это только мы такие прозорливые :)?