Вечная жизнь в играх своими руками




Хак в памяти - часть 4


Как найти нужную?

Для начала переведем "сырые" файловые смещения в виртуальные адреса. Проще всего это сделать в помощью hiew'а (http://www.wasm.ru/baixado.php?mode=tool&id=112). Грузим dumped_1.exe, давим <F5> (goto), вводим "сырое" смещение 166574 и нажимаем <enter> — hiew тут же показывает в верхней строке соответствующий виртуальный адрес (PE.00568574), а значение байта под курсором равно 32h (см. рис. 5), значит, все правильно!

Рисунок 5 перевод сырых смещений в виртуальные адреса в hiew'e

Загружаем soft-ice (подопытная игрушка при этом уже должна быть запущена), нажимаем <Ctrl-D> и говорим "addr legacy", заставляя отладчик переключиться на контекст нужного процесса (в данном случае: legacy.exe – главного исполняемого файла игрушки). Вводим "wd", чтобы появилось окно дампа (если окно уже присутствует на экране, то вводить "wd" не надо) и пишем "g 568574", где 568574 — виртуальный адрес предполагаемой ячейки памяти с патронами. Отладчик показывает в дампе содержимое памяти. Команда "e" позволяет его редактировать в интерактивном режиме. Как вариант, можно написать "e 568574 66", где 66 – количество патронов в шестнадцатеричном исчислении.

Рисунок 6 soft-ice отличное средство для пополнения запаса патронов

Захачив предполагаемую ячейку с патронами выходим из отладчика по <Ctrl-D> и смотрим — добавили нам патронов или нет (в некоторых играх изменения отображаются только после следующего выстрела). Ни хрена! Патроны продолжают убывать, а враги напирают и долго мы так не продержимся! Сурово!

Пробуем вторую ячейку — 1666B4h, лежащую (как утверждает hiew) по виртуальному адресу 5686B4h, но количество патронов по прежнему остается неизменным. А вот на третий раз нам действительно везет и патроны послушно увеличиваются до нужного значения (см. рис. 7).


Содержание  Назад  Вперед