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


              

не самое мощное оружие, но


Ладно, завязываем с теорией и переходим к активным действиям.



Рисунок 16 бензопила — не самое мощное оружие, но чуть позже с ее помощью мы завладеем BFG

Возвращаемся в DOOM. На самый первый уровень. Выходим на балкон и видим пилу. В смысле бензопилу. Сохраняемся, затем не совершая никаких движений сохраняемся еще. Берем пилу и сохраняемся в третий раз (см. рис. 16). Мы получаем следующие файлы: doomsav0.dsg, doomsav1.dsg и doomsav2.dsg. Натравливаем на них fck.exe и видим результат:

raw offset    doomsav1.dsg  doomsav2.dsg

00000008h:    CEh    35h

00000009h:    DDh    CFh

0000000Ah:    1Ch    22h

0000000Ch:    E8h    15h

0000000Dh:    2Ch    B1h

0000000Eh:    D9h    98h

00000014h:    51h    54h

000000BAh:    01h    07h

00000121h:    0Bh    44h

00000123h:    01h    02h

00000127h:    00h    47h

00000128h:    00h    FDh

00000129h:    01h    00h

0000012Bh:    00h    20h

0000012Ch:    00h    01h

00000135h:    00h    47h

00000136h:    00h    FDh

00000137h:    01h    00h

00000139h:    00h    20h

0000013Ah:    00h    01h

0000013Dh:    03h    83h

0000028Ah:    24h    26h

000002A9h:    00h    08h

000002ABh:    01h    00h

Листинг 12 до и после взятия бензопилы ("подозреваемая" ячейка выделена полужирным)

Да тут до фига изменений! Даже не сообразишь с чего начинать… Будем рассуждать логически. Если оружие храниться с байтовом флаге, то он скачкообразно поменяет свое значение с FALSE (ноль) на TRUE (обычно 1 или FFh) или наоборот. Если это битовый флаг, то после захвата бензопилы, нужная нам переменная будет отличаться всего одним битом.

Начнем с ячейки 12Ch – она поменяла свое значение с 00h на 01h. Допустим, этот флаг хранит бензопилу. Тогда логично предположить, что остальное оружие хранится где-то рядом (хотя это бывает и не всегда), однако, соседние с не ячейки меняют свое значение в сумбурно-хаотичном порядке и на флаги не тянут.

А вот ячейка 13Dh очень даже похожа! Смотрите — сначала в ней было 03h (00000011b), а после взятия бензопилы — 83h (10000011b).

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