Выбрать главу

Результат выполнения команды называется выводом команды diff (diff- файлом), или файлом различий, и обладает тем свойством, что если есть diff-файл и один из исходных сравниваемых файлов, то второй файл можно восстановить. Именно поэтому для отправки небольшого количества изменений текстового файла, особенно исходных текстов программ, часто используется пересылка файла различий. При отправке по почте открытых исходных текстов исправлений уязвимостей программ отправитель не всегда пересылает файл различий, который позволяет исправить исходный текст программы. Программа, которая исправляет ошибки, используя файл различий, называется патчем (заплаткой).

В зависимости от версии diff в отчет команды, кроме выявленных различий, включается и другая информация, например для редактора ed или системы управления аудитом (RCS – Revision Control System). Для того чтобы ее можно было обработать, включаемая информация должна содержать регулярные выражения для выполнения некоторых операций, понимать файлы программ, написанных на языке С, и, как часть своего отчета, может выводить имя функции, в которой выявлены изменения.

Благодаря проекту Cygwin доступна Windows-версия команды diff (как и большинство других программ UNIX). В рамках этого проекта задуман перенос ряда программного инструментария GNU и других программ UNIX на платформу Windows. В той или иной форме продукты GNU выпускаются под защитой общедоступной лицензии GNU (GPL – GNU PublicLicense), в соответствии с которой продукт становится общедоступен. Дополнительные сведения (включая пакет, содержащий Windows-версию команды diff) могут быть найдены по адресу http://sourceware.cygnus.com/cygwin.

Компания Microsoft включила утилиту Windiff в состав инструментария ресурсов (resource kits) Windows NT и Windows 98. Это графическая версия команды diff, которая отображает изменения разными цветами и имеет графическое представление удаляемых или вставляемых строк.

Работа с шестнадцатеричными редакторами

Говоря о применении шестнадцатеричных редакторов, уже упоминалось о возможности изменения двоичных файлов. Шестнадцатеричный редактор – это программное средство, позволяющее пользователю получить непосредственный доступ к двоичному файлу в обход приложения, использующего этот файл. Говоря о двоичных файлах, имеются в виду и текстовые файлы. Конечно, большинство людей используют для редактирования текстовых файлов специальные программы, поскольку применение для этих целей шестнадцатеричных редакторов неудобно и, говоря образно, сродни самоубийству.

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

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

Далее кратко будут рассмотрены три шестнадцатеричных редактора: – Hackman, [N] Curses Hexedit и Hex Workshop. Их рассмотрение не охватывает все шестнадцатеричные редакторы. Просто они представляются автору наиболее интересными.

Hackman

Hackman – свободно распространяемый шестнадцатеричный редактор в среде Windows. У него ряд возможностей, включая функции поиска, удаления, вставки, дизассемблирования, шестнадцатеричный калькулятор и многое, многое другое. Как видно из рис. 5.9, графический интерфейс пользователя (GUI) несколько аскетичен.

Рис. 5.9. Интерфейс пользователя редактора Hackman

В конце рис. 5.9 показано, что редактор Hackman предоставляет интерфейс командной строки. На рисунке приведен пример шестнадцатеричного редактирования файла cmd.exe при помощи редактора Hackman. Hackman легок в использовании. Кроме основных функциональных возможностей, необходимых пользователю при работе с шестнадцатеричным редактором, он дополнительно предоставляет хорошо продуманный интерфейс пользователя. Благодаря недавним усилиям разработчиков он надежен и удобен для пользователя. Редактор можно найти по адресу www.technologismiki.com/hackman. [N] Curses Hexedit