22

Ромхакинг 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?...

Ромы - http://www.emu-russia.net , http://www.emu-land.net

Лига Геймеров

55.4K постов91.8K подписчика

Правила сообщества

Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в
Лигу Геймеров



Нельзя:

Попрошайничать;

Рекламировать;

Оскорблять участников сообщества;

Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;

Выкладывать ваши кулвидосы с только что зареганных акков - пермач

За неэтичное использование сообщества - тоже бан. Если ты выкладываешь пост в наше сообщество и получаешь стартовые плюсы от наших подписчиков, не думай, что вытаскивать потом пост в своё личное сообщество будет умным поступком.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

Попробовал сейчас с игрушкой Batman. Ничего не получилось. То есть он находит шесть адресов я их меняю, в итоге косяк со звуком, не появляется оружие. Но жизни не отнимает. Можешь показать на моем примере? Давно хотел ее пройти, купил недавно псп и теперь на эмуляторе играюсь. Вот такой батман

Иллюстрация к комментарию
раскрыть ветку (13)
1
Автор поста оценил этот комментарий
кстати сам его сейчас пытаюсь пройти , дошел до ласта он вообще жесть особеннов NTSC версии слишком быстро


тоже пытался его хакнуть( ради интереса, а так в эмулеяторе просто можно заморозить значение ), там система другая тк мапер другой, в марио все просто там тупо команда "DEC" при старте игры в память по тому адресу записывается 3 жизни потом при помощи DEC или INC тупо отнимается или прибавляется

а в бетмане все не так и сложней намного , при каждом полученном ударе или поднятии сердца, он читает значение потом сравнивает его со значением "08" ( 8 хит поинтов) и потом уже делает манипуляции , завтра попробую похимичить

раскрыть ветку (12)
0
Автор поста оценил этот комментарий

Попробуй. Будем результата ждать.

раскрыть ветку (11)
1
Автор поста оценил этот комментарий
Вроде получилось, багов не заметил. Днем я чет затупил вообще не то там делал, адреса попутал.
https://yadi.sk/d/bDOIOUY-tAnUB
раскрыть ветку (10)
0
Автор поста оценил этот комментарий

Все таки отнимаются жизни, но не от злодеев а от окружения, кислота или электричество. Но все равно огромное спасибо.

раскрыть ветку (8)
1
Автор поста оценил этот комментарий
теперь не отнимаются
проверил на паре уровней, типа кислоты, капель падающих, электро труб , от остального тоже должно теперь не отниматься по идее https://yadi.sk/d/k8OrLENktAqrS
раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Блин ну просто огромное спасибо!

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
еще нашел баг)) урон от последнего босса тоже записан походу в другое место) Точней от пистолета Джокера, но от него легко уклониться тупо держась к Джокеру поближе


все короче типа финальная версия)) https://yadi.sk/d/en2ytjPvtAtuL

теперь от выстрелов Джокера не умереть, полоска тратится , но сразу заполняется и умереть нельзя
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Финальное благодарю.)

1
Автор поста оценил этот комментарий
еще нашел баг)) урон от последнего босса тоже записан походу в другое место) Точней от пистолета Джокера, но от него легко уклониться тупо держась  к Джокеру поближе
1
Автор поста оценил этот комментарий

ща проверю, мож удастся быстро исправить

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Да не заморачивайся и так прекрасно проходится. Может дело у меня в эмуляторе? Я то на псп играю.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
нет не в эмуляторе дело, просто там урон от врагов и урон от окружения раздельно прописан
0
Автор поста оценил этот комментарий

Вот спасибо! Вот уважил, пройду на старости лет то наконец ее.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества