Редакторы шестнадцатеричных файлов: принципы и применение.
Hex editor
Редактор HEX: манипуляции с двоичными данными файлов. Изменение байтов, просмотр в шестнадцатеричном формате, редактирование секторов диска. Обзор программ.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Компьютерная программа для манипулирования байтами.
Computer program for byte manipulation
Гекса-редактор (или двоичный редактор файлов, или байтовый редактор) — это компьютерная программа, позволяющая изменять фундаментальные двоичные данные, составляющие компьютерный файл. Название «hex» происходит от «hexadecimal» — стандартного числового формата для представления двоичных данных. Типичный компьютерный файл занимает несколько областей на носителе информации, содержимое которых объединяется для формирования файла. Гекса-редакторы, предназначенные для разбора и редактирования данных секторов из физических сегментов дискет или жестких дисков, иногда называют редакторами секторов или редакторами дисков.
A hex editor (or binary file editor or byte editor) is a computer program that allows for manipulation of the fundamental binary data that constitutes a computer file. The name 'hex' comes from 'hexadecimal', a standard numerical format for representing binary data. A typical computer file occupies multiple areas on the storage medium, whose contents are combined to form the file. Hex editors that are designed to parse and edit sector data from the physical segments of floppy or hard disks are sometimes called sector editors or disk editors.
Ранняя история
С момента изобретения компьютеров и их разнообразных применений было создано множество форматов файлов. В некоторых особых случаях было удобно иметь доступ к данным в виде последовательности необработанных чисел. Для систем IBM OS/360 была доступна программа под названием SUPERZAP (AMASPZAP), которая могла редактировать необработанные записи на диске и также распознавала формат исполняемых файлов. Пары шестнадцатеричных цифр (каждая пара может представлять байт) являются текущим стандартом, поскольку подавляющее большинство машин и форматов файлов, используемых сегодня, обрабатывают данные в единицах или группах из 8-битных байтов. Шестнадцатеричная и восьмеричная системы счисления распространены, поскольку эти цифры позволяют увидеть, какие биты установлены в байте. Сегодня десятичная система счисления, в качестве альтернативы шестнадцатеричной, становится популярным вторым вариантом благодаря более привычной системе исчисления и дополнительным вспомогательным инструментам, таким как системы шаблонов и инспекторы данных, которые снижают преимущества шестнадцатеричного числового формата.
Since the invention of computers and their different uses, a variety of file formats has been created. In some special circumstances it was convenient to be able to access the data as a series of raw digits. A program called SUPERZAP (AMASPZAP) was available for IBM OS/360 systems which could edit raw disk records and also understood the format of executable files. Pairs of hexadecimal digits (each pair can represent a byte) are the current standard, because the vast majority of machines and file formats in use today handle data in units or groups of 8 bit bytes. Hexadecimal and also octal are common because these digits allow one to see which bits in a byte are set. Today, decimal instead of hexadecimal representation is becoming a popular second option due to the more familiar number base and additional helper tools, such as template systems and data inspectors, that reduce the benefits of the hexadecimal numerical format.
Системы шаблонов
Некоторые шестнадцатеричные редакторы предлагают систему шаблонов, которая может представлять последовательность байтов бинарного файла в структурированном виде, охватывая часть или весь желаемый формат файла. Обычно графический интерфейс шаблона представляет собой отдельное окно рядом с основным шестнадцатеричным редактором. Некоторые системы читов состоят только из такого графического интерфейса шаблона. Как правило, шаблон представлен в виде списка помеченных текстовых полей, позволяющих легко редактировать отдельные значения файла в соответствующем формате (например, как строку, цвет или десятичное число). Без поддержки шаблонов необходимо находить правильное смещение в файле, где хранится значение, которое требуется изменить. Кроме того, прямое шестнадцатеричное редактирование может потребовать преобразования из шестнадцатеричной системы в десятичную, учета порядка байтов или других особенностей преобразования типов данных. Шаблоны могут сохраняться в файлы, что позволяет пользователям обмениваться ими, и часто они публикуются на веб-сайте производителя. Большинство, если не все, шестнадцатеричные редакторы определяют свой собственный формат файла шаблона; нет тенденции к поддержке стандарта или даже совместимости между различными существующими форматами.
Some hex editors offer a template system that can present the sequence of bytes of a binary file in a structured way, covering part or all of the desired file format. Usually the GUI for a template is a separate tool window next to the main hex editor. Some cheat engine systems consist only of such a template GUI. Typically, a template is represented as a list of labeled text boxes, such that individual values of a file can be easily edited in the appropriate format (e. g., as string, color, or decimal number). Without template support, it is necessary to find the right offset in a file where the value that is to be changed is stored. Also, raw hex editing may require conversion from hexadecimal to decimal, catering for byte order, or other data type conversion peculiarities. Templates can be stored as files, thereby exchanged by users, and are often shared publicly over the manufacturer's website. Most if not all hex editors define their own template file format; there is no trend to support a standard or even compatibility between the various formats out in the wild.
Скриптовые системы
У продвинутых шестнадцатеричных редакторов есть системы скриптов, позволяющие пользователям создавать макросы как последовательность команд пользовательского интерфейса для автоматизации типовых задач. Это можно использовать для предоставления скриптов, автоматически изменяющих файлы (например, для читов в играх, моддинга или исправлений, предоставляемых сообществом), или для создания более сложных и интеллектуальных шаблонов. Языки скриптов сильно различаются: от специфических языков, напоминающих пакетные файлы MS DOS, до систем, поддерживающих полноценные языки программирования, такие как Lua или Python.
Advanced hex editors have scripting systems that let the user create macro like functionality as a sequence of user interface commands for automating common tasks. This can be used for providing scripts that automatically patch files (e. g., game cheating, modding, or product fixes provided by community) or to write more complex/intelligent templates. Scripting languages vary widely, often being product specific languages resembling MS DOS batch files, to systems that support fully fledged scripting languages such as Lua or Python.
Системы плагинов
Некоторые избранные редакторы поддерживают систему плагинов, позволяющую расширять графический интерфейс и добавлять новую функциональность, как правило, за счёт загрузки динамических библиотек, написанных на языке, совместимом с C.
A few select editors have a plugin system that allows to extend the GUI and add new functionality, usually loading dynamic link libraries written in a C compatible language.