Ромхакинг for fun. #1
Многие в детстве видели игры для "Dendy" типа Super Mario Bros с бесконечными жизнями или где Марио мог одним прыжком долететь до финиша, или "Черный плащ 2" (!) который был хаком Super C с измененными тайлами. В 90х мало кто мог сам "хакнуть" игру, а теперь есть куча инструментов для этого и можно попробовать сделать это самому.
Для этого нам понадобится эмулятор FCEUX 2.2.2 ( в этом эмуляторе полно инструментов типа встроенного хекс редактора, дебагера , просмоторщика тайлов которые в данный момент в видеопямати и тд) и ром игры, например Super Mario Bros.
Запустим Марио в эмуляторе запустим игру и зайдем в поиску в памяти ( RAM Search)
Например мы хотим бесконечные жизни. Изначально у нас 3 жизни ( но отсчет идет с 0). Сделаем поиск в памяти как на картинке , и найдем все значения "2". Те значения которые меняются (красные) можно сразу же отсеивать опять делая "Search".
Дальше например добежим до скрытого блока с жизнью о котором все знают, возьмем его и сделаем поиск опять но уже предварительно изменив фильтр , выставим "Greater Than" (больше чем) и "Previous Value" (предыдущее значение). У нас останется один адрес где хранится количество жизней
Дальше кликаем правой кнопкой на адресе и откроется хексредактор с уже помеченным значением в памяти приставки , кликаем на него правой кнопкой и выбираем "Add Write Breakpoint".
Теперь откроется дебагер и он будет эмуляцию ставить на паузу каждый раз когда в ячейку жизней будет происходить запись (чтоб продолжить эмуляцию жмем Run) и будет показывать команды процессора которые выполняются при этом.
Вернемся в игру не закрывая ничего пока. И спрыгнем в пропасть потратив 1 жизнь. И сразу увидим что сработал наш "breakpoint" фильтр в дебагере. И в этой строке видно что происходит уменьшение (DEC) значения по адресу 075A и слева так же показана эта функция в хекс виде , а не в виде опкода процессора NES. Скопируем "CE 5A 07" .
Откроем окно с хекс редактором и выберем отображение содержимого рома, а не содержимого памяти приставки и сделаем поиск по "CE 5A 07".
Изменим "5A 07" на "00 00" и сохраним ром File -> Save Rom . Закроем эмулятор и все окна уже нам ненужные и запустим этот ром опять. И теперь при смерти у нас не будут отниматься жизни, тк вместо адреса значение которого должно уменьшаться у нас стоят нули.Это конечно все очень поверхностно и очень уж простой пример. Не все игры или параметры игры получиться так легко хакнуть без знания процессора 6502, но ради развлечения сойдет.
Хотел еще показать как графику можно поменять, но слишком длинно получается и сделаю другой пост .
Эмулятор - http://www.fceux.com/web/home.html
Опкоды NES процессора и их описание - http://www.thealmightyguru.com/Games/Hacking/Wiki/index.php?...









Лига Геймеров
54.8K постов91.7K подписчиков
Правила сообщества
Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в Лигу Геймеров
Нельзя:
Попрошайничать;
Рекламировать;
Оскорблять участников сообщества;
Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;
Выкладывать ваши кулвидосы с только что зареганных акков - пермач
За неэтичное использование сообщества - тоже бан. Если ты выкладываешь пост в наше сообщество и получаешь стартовые плюсы от наших подписчиков, не думай, что вытаскивать потом пост в своё личное сообщество будет умным поступком.