Шестнадцатеричный редактор


Шестнадцатеричный редактор

Главная / Ассемблер / Для чайников / Быстрый старт /

ПРИМЕЧАНИЕ Рисунки на этой странице не отображаются, но вы можете найти их в книге.

То, что мы сделаем сейчас, с моей точки зрения весьма интересно. Это будет ваша первая программа в машинных кодах (и, скорее всего, единственная))).

Ассемблер – это язык низкого уровня, но все ж таки язык. А пробовали вы написать программу в машинных кодах? Сейчас попробуем.

Написать программу можно и не имея никаких ассемблеров-компиляторов и прочих инструментов – с помощью какого-либо шестнадцатеричного редактора (или hex-редактор или hex editor).

ВНИМАНИЕ! Написание программ с использованием шестнадцатеричного редактора – это не только утомительно, но и НЕБЕЗОПАСНО ДЛЯ КОМПЬЮТЕРА! Так как ошибки в процессе создания программы неизбежны. Но если TASM со товарищи проверяют текст программы на наличие ошибок, то в шестнадцатеричном редакторе проверяющий только один – вы сами. Поэтому, если ошибка останется незамеченной, файл все равно будет создан. И если вы попытаетесь этот «неправильный» файл запустить, то в лучшем случае получите зависание компьютера, а в худшем этот файл может такое натворить – вирусы отдыхают.

И все-таки разбор программ в шестнадцатеричном редакторе весьма полезен. Особенно тем, кто собирается работать с электроникой – ведь микропроцессоры не понимают ни Паскаль ни С++. Хотя и существуют специальные устройства и программы, которые им эти языки «объясняют».

Для начала вам потребуется шестнадцатеричный редактор. Вы можете использовать любой, имеющийся у вас под рукой. Однако я буду использовать уже упоминавшийся McAfee FileInsight v2.1. Этот hex-редактор можно скачать бесплатно. Все описанные ниже действия справедливы именно для этого редактора.

Итак, шестнадцатеричный редактор у вас установлен. Запускаем его. Щелкаем по кнопке ОТКРЫТЬ, находим один из созданных нами СОМ-файлов, например, debug_1.com, и загружаем его в редактор.

Когда файл загружен, в редакторе вы увидите следующее (см. также рис. 1.12):

00000000 B4 02 B2 41 CD 21 CD 20 ...A.!. Можете открыть два других созданных нами файла: 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:

AX=0200 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B72 ES=0B72 SS=0B72 CS=0B72 IP=0102 NV UP EI PL NZ NA PO NC 0B72:0102 B241 MOV DL,41 Видите в последней строке B241? Знакомое сочетание? Это код команды MOV DL, 41.

Идем дальше. CD – код вызова прерывания. Какого? Смотрим следующее число. Итак, CD 21 – это код команды INT 21. Аналогично для CD 20.

Осталось разобраться с загадочными символами в конце строки. А здесь все просто: каждая цифра в числе соответствует коду символа таблицы ASCII, и эти символы выводятся в той же последовательности, что и шестнадцатеричные цифры. В этом тексте вместо некоторых символов стоят точки (.) – это просто коды не буквенных символов.

Ну а теперь напишем и создадим нашу изученную вдоль и поперек программу без ассемблеров и компоновщиков. Открываем редактор, создаём новый файл (для этого щёлкаем кнопку NEW на панели инструментов), затем щёлкаем кнопку View as Hex и вводим данные:

00000000 B4 02 B2 41 CD 21 CD 20 Сохраняем файл под именем, например, hex_1.com. Все. Программа готова. Теперь ее можно запустить и в очередной раз полюбоваться своим творением. Результат будет тот же, что и во всех предыдущих случаях.

И ещё один приятный сюрприз от редактора McAfee FileInsight v2.1 – он имеет свой дизассемблер! Если вы загрузите в редактор исполняемый файл, а в левом нижнем углу выберите вкладку DISASSEMBLY, то сможете посмотреть исходный код загруженной программы на языке ассемблера (рис. 1.12).

Зачем вообще нужны шестнадцатеричные редакторы и дизассемблеры? Ведь это так сложно. Да, это непросто. Однако хакеры так не думают. Именно с помощью шестнадцатеричных редакторов и дизассемблеров они ломают программы. Находят в коде нужные им места и исправляют их в соответствии со своими хакерскими капризами.

Конечно, мы не хакеры. Ломать программы не будем. Однако дизассемблеры и шестнадцатеричные редакторы весьма полезны и законопослушными программистам. Они используются, например, для отладки, для изучения машинных кодов и т.п. Например, вы знаете, как выглядит команда на языке ассемблера, но хотите узнать её машинный код. Если нет документации, то выход только один – шестнадцатеричный редактор и/или дизассемблер. Следует, однако, учесть, что не все команды умещаются в машинный код из двух чисел. Некоторые команды довольно сложные и требуют большего количества чисел для представления в машинных кодах.

av-assembler.ru

Шестнадцатеричный редактор - это... Что такое Шестнадцатеричный редактор?

Шестнадцатеричный редактор

Свободный hex-редактор KHexEdit входящий в состав KDE (kdeutils)

Свободный бинарный просмоторщик BIEW в режиме дизассемблирования

HEX-редактор или шестнадцатеричный редактор — тип программ для редактирования и просмотра двоичных данных в шестнадцатеричном представлении, которое, в большинстве случаев, более удобно и наглядно, чем двоичное. HEX-редакторы для прямого редактирования секторов гибких и жёстких дисков иногда называют редакторами секторов или редакторами дисков.

Обычно HEX-редакторы отображают данные одновременно в шестнадцатеричном и Исходные данные в двоичном виде

10110001 00000011 00010011 10000111 00000001 00001000 10100010 0011011111011101 01100111 00101011 11111110 01110110 01001111 00000000 10010101

Те же данные в шестнадцатеричном виде

B1 03 13 87 01 08 A2 37DD 67 2B FE 76 4F 00 95

Те же данные в текстовом виде (Кодировка CP1251)

± . . ‡ . . ў 7Э g + ю v O . •

Некоторые HEX-редакторы способны выполнять восстановление удалённых файлов (например, WinHex). Для этого применяется поиск специфичных файловых заголовков на жёстком диске. В некоторых случаях это позволяет восстановить если не весь файл, то его часть.

HEX-редакторы в основном используются для выполнения так называемого патча (patch), т.е. модификации двоичного кода исполняемого файла без изменения его размера, например, с целью снятия ограничений, связанных с использованием незарегистрированной (неоплаченной) версии программы.

Смотрите также

Wikimedia Foundation. 2010.

Смотреть что такое "Шестнадцатеричный редактор" в других словарях:

dic.academic.ru

Шестнадцатеричный редактор Вики

У этого термина существуют и другие значения, см. Hex.

Hex-редактор (англ. hex-editor), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная (англ. hexadecimal) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Факторы  

Очевидно, что, например, для платформ с 9-битовым байтом использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс[ | ]

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.

Кроме этого, часто используются дополнительные элементы:

Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].

Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.

Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.

Использование[ | ]

Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.

Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея[ | ]

См. также[ | ]

Примечания[ | ]

ru.wikibedia.ru

Шестнадцатеричный редактор Википедия

У этого термина существуют и другие значения, см. Hex.

Hex-редактор (англ. hex-editor), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная (англ. hexadecimal) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Факторы  

Очевидно, что, например, для платформ с 9-битовым байтом использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс[ | ]

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.

Кроме этого, часто используются дополнительные элементы:

Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].

Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.

Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.

Использование[ | ]

Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.

Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея[ | ]

См. также[ | ]

Примечания[ | ]

wikiredia.ru

Шестнадцатеричный редактор - Википедия

Материал из Википедии — свободной энциклопедии

(перенаправлено с «»)Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 20 июня 2015; проверки требуют 2 правки. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 20 июня 2015; проверки требуют 2 правки. У этого термина существуют и другие значения, см. Hex.

Hex-редактор (англ. hex-editor), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная (англ. hexadecimal) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Факторы  

Очевидно, что, например, для платформ с 9-битовым байтом использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс[ | ]

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.

Кроме этого, часто используются дополнительные элементы:

Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].

Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.

Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.

Использование[ | ]

Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.

Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея[ | ]

См. также[ | ]

Примечания[ | ]

encyclopaedia.bid

Шестнадцатеричный редактор Википедия

У этого термина существуют и другие значения, см. Hex.

Hex-редактор (англ. hex-editor), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная (англ. hexadecimal) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Факторы  

Очевидно, что, например, для платформ с 9-битовым байтом использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс[ | ]

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.

Кроме этого, часто используются дополнительные элементы:

Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].

Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.

Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.

Использование[ | ]

Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.

Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея[ | ]

См. также[ | ]

Примечания[ | ]

56.ru-wiki.ru

Шестнадцатеричный редактор Википедия

У этого термина существуют и другие значения, см. Hex.

Hex-редактор (англ. hex-editor), шестнадцатеричный редактор — приложение для редактирования данных, в котором данные представлены в «сыром виде» — как последовательность байтов. Он может быть как отдельным самостоятельным приложением, так и компонентом другого, более сложного приложения, такого как дизассемблер, отладчик, интегрированная среда разработки и т. п.

Для представления значения байтов используется шестнадцатеричная (англ. hexadecimal) система счисления, что и отражено в названии редактора. Выбор шестнадцатеричной системы счисления обусловлен следующими факторами:

Факторы  

Очевидно, что, например, для платформ с 9-битовым байтом использовались бы трёхзначные восьмеричные числа, а аналогичное по функциональности приложение называлось бы Oct-редактором.

Данные, которые отображает и позволяет редактировать Hex-редактор, могут быть:

Интерфейс[ | ]

Схематичное изображение интерфейса типичного Hex-редактора. Отображаемые данные — всего лишь пример.

Hex-редактор отображает данные в виде матрицы, каждая ячейка которой соответствует одному байту, записанному в шестнадцатеричной системе счисления в виде двухзначного числа (с ведущим нулём, если он требуется). Количество столбцов матрицы является степенью двойки, чаще всего используются 16 или 8 колонок, иногда 4. Число строк зависит от количества байтов, которые требуется отобразить/отредактировать. В случае использования 16 колонок одна строка соответствует одному параграфу.

Кроме этого, часто используются дополнительные элементы:

Большинство редакторов позволяют совершать редактирование как в левой половине, так и в правой (при её наличии). При этом совершаемые изменения когерентны[1].

Простые редакторы позволяют только менять значение выбранных байтов по отдельности. Продвинутые — редактировать совокупности байтов как цельные блоки[2], выполнять поиск по последовательностям или шаблонам последовательностей.

Hex-редакторы для редактирования образов дисков могут включать в себя функции по восстановлению повреждённой файловой системы или случайно удалённых файлов.

Использование[ | ]

Hex-редакторы используются для редактирования не-текстовых данных, когда специализированной программы для редактирования имеющихся данных либо нет, либо её применение неоправданно или нежелательно. Примером может служить внесение изменений в скомпилированную программу без перекомпиляции последней. Так, с помощью Hex-редактора можно изменить значения жестко вшитых в код программы строковых и числовых констант, если правильно определить их расположение.

Если Hex-редактор имеет функции дизассемблера или дизассемблирование целевой программы уже было проведено с помощью другого инструмента заранее, и известно смещение, можно внести изменение непосредственно в код программы и изменить её поведение. Этим пользуются при исправлении ошибок, взломе, читерстве, ручном твикинге.

Поскольку Hex-редактор является достаточно универсальным инструментом, описать все варианты его применения не представляется возможным.

Галерея[ | ]

См. также[ | ]

Примечания[ | ]

fyloz.ru-wiki.ru


Смотрите также