Размер шрифта
-
+

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

Рис. 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. В худшем случае несколько попыток изменения смежных байт в файле с помощью шестнадцатеричного редактора подскажут, какой байт следует изменить для увеличения золотого запаса игрока.

Страница 107