Чтение онлайн

на главную - закладки

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

Автор смог расширить свое маленькое исследование и написал редактор героев Ultima 2, который позволил ему изменять такие свойства героев, как их сила, ум, количество и тип оружия, амуниция и т. д. Конечно, сегодня, по прошествии многих лет, он раскаивается по поводу содеянного. (К сведению читателя автор сообщает, что недавно вышла Ultima IX. В среднем производитель выпускает новую версию игры каждые 2 года.) В настоящее время автор играет в разные фантастические ролевые игры, например Heroes of Might and Magic II, где игрок играет роль героя, пытающегося добыть золото, совершенствующего свое мастерство в деле убийства монстров… Ну, вы поняли идею. На рисунке 5.6 показан старт типичной игры.

Рис. 5.6. Начало игры Heroes of Might and Magic II

В частности, обратите внимание на золотой запас героя: 7500 порций. Первое, что делает

автор, – он сохраняет игру под именем hackl. Затем он изменяет золотой запас на минимально возможную сумму. Вскоре автор объяснит причину своих поступков. Самое простое – это купить что-нибудь недорогое. Автор обычно отправляется в замок и покупает скелет – одну из самых дешевых вещей. После покупки скелета у автора становится 7425 порций золота. Автор сохраняет игру под именем hack2 и затем в режиме командной строки запускает команду сравнения файлов, как показано на рис. 5.7.

Рис. 5.7. Протокол сравнений двух файлов командой DOS fc

Команда fc сравнивает два файла. Если задать опцию /b, то выполняется побайтное сравнение. В результате печатается отчет найденных различий в шестнадцатеричном виде. Поэтому следующее, на чем следует остановиться, – это калькулятор Windows (программа calc.exe), который позволяет перевести числа 7500 и 7425 из десятичной системы счисления в шестнадцатеричную. Если выбрать подменю Scientific меню View калькулятора, то станут доступными дополнительные возможности преобразования чисел, включая преобразование из десятичного формата в шестнадцатеричное, что нам и требуется. При выбранном режиме Dec следует набрать 7500 и затем щелкнуть на кнопке Hex. В результате получим представление числа 7500 в шестнадцатеричной системе счисления 1D4C. Повторив то же самое для числа 7425, получаем 1D01.

Просмотрев результаты выполнения команды fc, обнаруживаем многообещающее различие по адресу 368 (в шестнадцатеричном представлении). Ранее там было 4C, а стало 01, что точно совпадает с проведенными вычислениями. Также можно предположить значения других чисел. Ранее в замке было восемь скелетов. После покупки одного осталось семь. На это, кажется, указывает байт по адресу 3AE4. Байт по адресу 3AD3 может означать один скелет в гарнизоне замка, где прежде не было ни одного.

Но поскольку автора интересует золотой запас, то он запускает шестнадцатеричный редактор и загружает файл hack2.gm1. Шестнадцатеричный редактор схож с редактором секторов, но ориентирован на работу с файлами, а не с дисковой памятью. Перейдя по смещению 368, видим, что там находятся данные 1D 01. Отметим, что цифры в числе расположены в обратном порядке, что непривычно для людей, которые используют язык, имеющий одинаковые корни с латинским языком. Объясняется это порядком запоминания чисел в процессорах Intel: наименее значащий байт числа запоминается по младшему адресу. Есть единственный способ удостовериться в правильности предположения о хранении найденной величины – изменить найденный байт. Автор изменил самый правый байт числа 1D (поскольку в этом случае результаты изменения проявятся сильнее всего) на величину FF (максимальная величина в шестнадцатеричной системе счисления). На рисунке 5.8 показан результат загрузки hack2.gm1 при старте игры.

Рис. 5.8. Та же игра после редактирования ее сохраненных данных

Обратите внимание на золотой запас, который теперь составляет 65 281 порцию. Быстрая проверка на компьютере подтверждает, что это десятичное представление шестнадцатеричного числа FF01. Теперь у игрока появилось серьезное преимущество: он может с легкостью крушить своих воображаемых врагов. Если бы игрок захотел увеличить свой золотой запас до максимально возможной в игре величины, то ему следовало бы также увеличить следующий байт справа от 1D, который в момент исследования был равен 0. В худшем случае несколько попыток изменения смежных байт в файле с помощью шестнадцатеричного редактора подскажут, какой байт следует изменить для увеличения золотого запаса игрока.

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

Если читатель знаком с игрой, то он может быть удивлен, почему изложенное не проиллюстрировано на примере современной версий игры Heroes of Might и Magic III. Причина будет раскрыта далее.

Исследование инструментария поиска различий

До рассмотрения других, более интересных примеров следует

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

Применение инструментария сравнения файлов

Первый шаг определения различий в файлах состоит в сравнении двух файлов. Для того чтобы найти различия, нужен инструментарий сравнения файлов. В качестве примера рассмотрим некоторые примеры инструментальных средств сравнения файлов.

Использование команды

fc

Команда fc, включаемая в течение многих лет в DOS, а позднее и в Windows – первый инструментарий, который будет подробно рассмотрен. На машинах с операционной системой Windows 9x команду fc можно найти в директории c: \windows\command, c: \windows или, в крайнем случае, в одной из директорий Windows. По умолчанию директория c: \windows\command перечислена в списке каталогов, используемых для задания порядка поиска выполнимых программ. Список задается командой path. Поэтому при необходимости можно просто набрать fc и выполнить команду. Опции команды fc перечислены ниже:

C:\windows\COMMAND>fc /?

Compares two files or sets of files and displays the

differences between

them.

FC [/A] [/C] [/L] [/LBn] [/N] [/T] [/W] [/nnnn]

[drive1:][path1]filename1

[drive2:][path2]filename2

FC /B [drive1:][path1]filename1 [drive2:][path2]filename2

/A Displays only first and last lines for each set of

differences.

/B Performs a binary comparison.

/C Disregards the case of letters.

/L Compares files as ASCII text.

/LBn Sets the maximum consecutive mismatches to the

specified number of lines.

/N Displays the line numbers on an ASCII comparison.

/T Does not expand tabs to spaces.

/W Compresses white space (tabs and spaces) for

comparison.

/nnnn Specifies the number of consecutive lines that must

match after a mismatch.

О переключателе /b уже говорилось. При сравнении двоичных файлов без указания переключателя процесс сравнения файлов завершается при достижении символа конца файла или нулевого байта. У этой команды переключатели режимов не чувствительны к регистру. Другими словами, работа команды не зависит от того, набраны ли переключатели строчными или заглавными буквами. Например, в файле подсказки описан переключатель /В, набранный заглавными буквами, в то время как в книге продемонстрирована прекрасная работа команды с переключателем /b. У команды есть ряд дополнительных переключателей, который читатель сможет изучить самостоятельно. В дальнейшем будет сказано о ряде утилит, которые сравнивают текстовые файлы лучше, чем команда fc. Но если выбранная читателем утилита может и отсутствовать на его компьютере, то, в крайнем случае, fc всегда присутствует на машинах с операционной системой Windows.

...

Примечание

В первом приближении эквивалентом команды fc в системе UNIX является команда cmp -l (l — строчная буква).

Использование команды

diff

Первоначально команда diff появилась на платформе UNIX. Она позволяет сравнивать двоичные файлы, но особенно полезна для сравнения текстов. Фактически ее возможностей сравнения текстовых файлов более чем достаточно. Полностью перечислить все возможности команды diff на страницах этой книги не представляется возможным, потому что их слишком много. Но с ними можно ознакомиться на оперативных страницах руководств UNIX или по документации (man page, сокр. manual page – оперативная страница руководства, – гипертекстовая страница консультативной информации, поясняющая действие конкретной команды).

Для того чтобы у читателя стожилось представление о команде diff, если он не слышал о ней ранее, в главе приведен список наиболее часто используемых возможностей команды. Команда diff определяет изменения в двух файлах, которые нужно сделать для приведения их в соответствие друг к другу. Она позволяет запоминать версии файлов без необходимости хранения полных копий каждой версии файла. Команда diff настолько хороша, что понимает, должны ли строки удаляться или добавляться в файл при приведении файлов в соответствие друг к другу:

Поделиться:
Популярные книги

Сердце Дракона. Том 19. Часть 1

Клеванский Кирилл Сергеевич
19. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.52
рейтинг книги
Сердце Дракона. Том 19. Часть 1

Последняя Арена 10

Греков Сергей
10. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 10

Идеальный мир для Лекаря 21

Сапфир Олег
21. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 21

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Live-rpg. эволюция-4

Кронос Александр
4. Эволюция. Live-RPG
Фантастика:
боевая фантастика
7.92
рейтинг книги
Live-rpg. эволюция-4

Девятое правило дворянина

Герда Александр
9. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Девятое правило дворянина

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Para bellum

Ланцов Михаил Алексеевич
4. Фрунзе
Фантастика:
попаданцы
альтернативная история
6.60
рейтинг книги
Para bellum

Егерь

Астахов Евгений Евгеньевич
1. Сопряжение
Фантастика:
боевая фантастика
попаданцы
рпг
7.00
рейтинг книги
Егерь

Вечная Война. Книга VII

Винокуров Юрий
7. Вечная Война
Фантастика:
юмористическая фантастика
космическая фантастика
5.75
рейтинг книги
Вечная Война. Книга VII

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Ваантан

Кораблев Родион
10. Другая сторона
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Ваантан

Идущий в тени 4

Амврелий Марк
4. Идущий в тени
Фантастика:
боевая фантастика
6.58
рейтинг книги
Идущий в тени 4

Мятежник

Прокофьев Роман Юрьевич
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Мятежник