- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Защита от хакеров корпоративных сетей - Коллектив авторов
Шрифт:
Интервал:
Закладка:
Рис. 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: windowscommand, c: windows или, в крайнем случае, в одной из директорий Windows. По умолчанию директория c: windowscommand перечислена в списке каталогов, используемых для задания порядка поиска выполнимых программ. Список задается командой path. Поэтому при необходимости можно просто набрать fc и выполнить команду. Опции команды fc перечислены ниже:
C:windowsCOMMAND>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 настолько хороша, что понимает, должны ли строки удаляться или добавляться в файл при приведении файлов в соответствие друг к другу:
[[email protected] /tmp]$ diff decode.c decode2.c
14a15
> #include <newinclude.h>