Если хакер когда-либо занимался программированием, то наверняка он захочет воспользоваться каким-нибудь средством или языком программирования. Как и в случае редакторов, выбор средств программирования – дело очень личное и субъективное. Сгодится любой язык программирования с полным набором функций, который позволяет получить доступ к любым файлам или адресам памяти. Если злоумышленнику потребуется доступ к специальным файлам, например к реестру Windows (Windows Registry), ему потребуется язык программирования, который предоставляет средства работы с ними. В случае реестра Windows это может быть компилятор языка C с соответствующими библиотеками, предоставляющими программный интерфейс приложения API (API – application programming interface), ActiveState Perl for Windows и, возможно, многие, многие другие. Те, кто заинтригован, могут найти ActiveState Perl for Windows в Интернете по адресу www.activestate.com/Products/ActivePerl/index.html.
Программа Game Wizard 32 была создана во время господства DOS на рынке компьютерных игр. Эта программа предоставляет игрокам ряд дополнительных возможностей, но сейчас будет рассказано только об одной из них, относящейся к теме обсуждения. Эта программа обладает возможностью поиска различий для игр. Это резидентная программа, постоянно присутствующая в оперативной памяти после ее запуска. После старта Game Wizard 32 можно начинать игру. В процессе игры игрок записывает на свой счет некоторые величины (набранные очки, золотой запас, запас энергии и т. д.), изменяя параметры игры. В результате будет составлен список найденных параметров игры (list of matches). Затем, после изменения параметров игры, можно еще раз просмотреть список, найти различия, отредактировать их и возобновить игру с новыми параметрами.
В настоящее время большинство игроков называет подобные игры тренерами или редакторами памяти. Принцип их работы аналогичен рассмотренному ранее принципу работы с файлами. Широкий диапазон программ этого класса может быть найден по адресу http://gamesdomain.telepac.pt/directd/pc/dos/tools/gwiz32.html.
Другие инструментальные средства, которые могут оказаться чрезвычайно полезными при работе в Windows, – это программы File Monitor (FileMon) и Registry Monitor (RegMon) компании Sysinternals. Если читатель работает с NT, то пусть он попробует программу HandleEx, которая предоставляет похожие возможности. Сайт компании находится по адресу www.sysinternals.com. На сайте много полезных утилит, большинство из которых свободно распространяются вместе с исходными текстами.
FileMon – программа, которая позволяет отслеживать обращение различных программ к файлам и их работу с файловой системой (чтение, запись, изменение атрибутов и т. д.), как это показано на рис. 5.13.
Рис. 5.13. Отчет программы FileMon
Применяя фильтрование, можно узнать о действиях выбранной для анализа программы, сократив объем выводимой информации. Обратите внимание, что при фильтрации во время чтения файла отображаются смещение и длина читаемых данных, что помогает определить их адрес в файле. Таким образом, программа FileMon предоставляет еще один способ сокращения списка просматриваемых файлов.
RegMon – другая программа компании Sysinternals. Как и следовало ожидать, она аналогична FileMon, но работает с реестром Windows, как это показано на рис. 5.14.
Во время подготовки этого примера автор слушал приложение Spinner с сайта spinner.com, который использует Real Audio для воспроизведения музыки. Во время своего выполнения Real Audio находится в состоянии «занято». В строчке с номером 472 можно увидеть работу протокола динамической конфигурации хоста DHCP (DHCP – Dynamic Host Configuration Protocol). Протокол динамической конфигурации хоста является сетевым стандартом, регламентирующим процесс присваивания сервером IP-адресов и другой конфигурационной информации машинам-клиентам. Программа RegMon особенно полезна для проверки подозрений о записи приложением чего-либо интересного где-нибудь в потаенном местечке реестра или при попытке определить действия Троянского коня. Программа также информирует при копировании и сравнении всего реестра в целом.
Поиск неисправностей
Можно назвать несколько схожих причин, по которым непосредственное редактирование двоичных файлов невозможно. Чтобы понять их, надо детально рассмотреть их происхождение. Суть их заключается в невозможности изменения части контролируемого файла до тех пор, пока не будут предприняты специальные меры.
Проблемы контрольных сумм и кэширования
Первое, с чем может столкнуться читатель, – это то, что вместе с файлом запоминается служебная информация: контрольная сумма или кэш-величина. В данном случае служебная информация предохраняет файл от несанкционированного изменения и представлена двоичными данными небольшой разрядности, которые описывают контролируемую часть файла. При поступлении запроса на чтение программа обрабатывает часть данных и получает контролирующую их величину. Обычно эта величина занимает от 4 до 20 байт и запоминается вместе с файлом.