Разработка и ромхакинг > Ромхакинг
[Дэнди/NES/SMD] ROM glitcher - сделай себе хак не зная ромхакинг
AnyZero:
Ещё немного напишу, к сожалению в Shining Force 2 не включилось управление мобами, повторно проверять уже не стал, но зато нашлась мгновенная победа. И ещё, в противовес находимой неуязвимости я почти везде нашёл и мгновенную смерть, сразу умираешь или полоска энергии стремится к нулю (Shining Force 2 , Comix Zone, Waynes world, Beyond oasis).
Беларус учит русский:
--- Цитата: AnyZero от 16 Июль 2024, 12:27:38 ---в Shining Force 2 не включилось управление мобами
--- Конец цитаты ---
Видимо, игра сначала проверяет активированность секретного меню. Т.е. надо сначала сделать хак на его постоянную включённость, чтобы далее код проверял его пункты.
Попробую проверить. Скинь мне сохранение в бою, если ещё не удалил.
--- Цитата: AnyZero от 16 Июль 2024, 12:27:38 ---я почти везде нашёл и мгновенную смерть
--- Конец цитаты ---
Про это и написано в описании к программе:
--- Цитата: perfect_genius от 20 Февраль 2024, 03:08:38 ---Зато неожиданно нашёл неуязвимость для первого игрока, хотя всегда думал, что там только логика "если получен урон, то игрок умирает", которая инвертируется в "если не получен урон, то игрок умирает", что обычно и происходило - игрок моментально умирал
--- Конец цитаты ---
Поэтому интересно что же там меняется, из-за чего появляется неуязвимость. Но проверить это пока нет времени.
Кстати, когда ты находишь нужное, ты продолжаешь до конца процесса, отсеиваешь все ненужные изменения? Т.е. получаешь в конце адрес изменения?
AnyZero:
Сохранёнка первой битвы, сделана в kegafusion.
Да потом до конца добиваю, там уже быстро процесс проходит, но ромы и места изменений я не смотрел.
Беларус учит русский:
0x28fb4 - активация секретного меню (26 попыток)
0x23fd8 - управление врагами, меню оказалось не нужным (185 попыток)
По адресам будет 66 или 67 и просто меняешь их друг на друга.
(В этот переводе Шедевра глючит звук в GensRRv11- это известный баг?)
AnyZero:
Так как пользуюсь Kega как основным эмулятором, а там проблемы со звуком не было, то хз известный он или нет.
Новую версию не планируешь выкладывать? Хочется чего-то такого, поэкспериментировать.
Беларус учит русский:
Да, что-то затянулась разработка, хотя делаю непрерывно каждый день, уже 7 месяцев :lol:
Надеюсь, за неделю доделаю, а пока отправил тебе в личку что есть.
AnyZero:
Всё же с массивами не так интересно играть чем с "переключателями", пока видел только графические и звуковые глюки.
Беларус учит русский:
Первоначальной функций было менять вещи местами или множить. В какой игре что ты хотел изменить и на что?
По идее, с этим инструментом тоже можно развлечься, установив своему персонажу приёмы какого-нибудь босса, например. Или поменять местами расположение предметов. Но это только в идеале, поэтому это больше поисковик ресурсов для хакеров получился.
После него буду делать поисковик чисел, чтобы менять количества и координаты. Может с ним будет поинтереснее :)
Беларус учит русский:
У Глитчера появилась пара и теперь первый называется Переключатель, а второй - Переставлятель. Он ищет массивы указателей, которые могут указывать на что угодно - изображения, звуки, состояния анимаций, уровни, порядок объектов, код поведения и т.д. После нахождения их можно менять местами и множить копированием.
Lance_Kalzas:
--- Цитата: perfect_genius от 06 Декабрь 2024, 02:27:03 ---У Глитчера появилась пара и теперь первый называется Переключатель, а второй - Переставлятель. Он ищет массивы указателей, которые могут указывать на что угодно - изображения, звуки, состояния анимаций, уровни, порядок объектов, код поведения и т.д. После нахождения их можно менять местами и множить копированием.
(Ссылка на вложение)
--- Конец цитаты ---
О, заново изобрёл Поганку :thumbup:
Беларус учит русский:
Скорее, сделал узкоспециализированные, ограниченные варианты.
Razor:
Попробовал сегодня переставлятор, чтобы найти побыстрее в Робокопе против Терминатора таблицу со списком куда какая дверь в игре телепортирует. Сэкономил кучу времени, так как нашлось всё буквально за десяток отсеиваний. Лайк за программу. ;)
Беларус учит русский:
Ого, отлично :ohmy:
Опытный реверсер тоже нашёл бы в отладчике это быстро, но на то он и опытный, а тут вариант для обычных людей.
Каких-то нареканий к интерфейсу или идей улучшения нет?
Ты нашёл этот список и менял указатели в самой программе перебирая все, и давая имена ("уровень N"), или же искал этот массив отдельно в хекс-редакторе и менял там?
Razor:
--- Цитата: perfect_genius от 31 Декабрь 2024, 13:31:49 ---Каких-то нареканий к интерфейсу или идей улучшения нет?
--- Конец цитаты ---
Ну мне было бы удобнее, если бы оно пораньше писало какие адреса оно в данный момент ломает
--- Цитата: perfect_genius от 31 Декабрь 2024, 13:31:49 ---Ты нашёл этот список и менял указатели в самой программе перебирая все, и давая имена ("уровень N"), или же искал этот массив отдельно в хекс-редакторе и менял там?
--- Конец цитаты ---
Я нашел в какой момент оно сломало то что мне нужно, и спидранил пока программа не выдала адрес. Так как там таблица оказалась чуть умнее, что переставлятель не смог добиться прям совсем нужного изменения. Потом уже через HEX редактор и дебаггер в Генсе нашел что конкретно на что менять.
Беларус учит русский:
--- Цитата: Razor от 31 Декабрь 2024, 15:40:17 ---пораньше писало какие адреса оно в данный момент ломает
--- Конец цитаты ---
Т.е. чтобы показывало адрес первого элемента массива? Про это думал, но так и не придумал где его поставить. Наверно, надо бы в центр экрана на строку выше первого элемента.
Попробовал повторить за тобой, нашёл вот этот массив:
а в нём функцию в строке 10:
Подстановка соседних элементов вместо него переносит в разные места разных уровней игры, но не в другие двери этого же уровня. Видимо, номер/позиция двери вносится в регистр перед вызовом этой функции, да?
В игре есть смена сложности игры, и может быть предполагалось, что дверь будет вести в другие места уровня при повышении сложности - уж очень сложный уровень в обрезанном варианте, а полный вариант выглядит вообще непроходимым.
Razor:
--- Цитата: perfect_genius от 02 Январь 2025, 16:49:57 ---Подстановка соседних элементов вместо него переносит в разные места разных уровней игры, но не в другие двери этого же уровня. Видимо, номер/позиция двери вносится в регистр перед вызовом этой функции, да?
--- Конец цитаты ---
Там формат:
* 1 байт - номер уровня
* 1 байт - номер двериПереставлятель только первый байт меняет, поэтому оно только уровни переключает.
Беларус учит русский:
Переставлятель переставляет только элементы-указатели массива между собой, а они все 4 байта (нули в начале опущены) - это они на скриншоте после номера строки.
Получается, первый байт - это позиция элемента функции дверей в этом массиве. Второй байт заносится в регистр, вызывается эта функция по указателю под номером 10, которая забирает из регистра номер двери.
Я собирался следующим делать инструмент, ищущий такие константы в коде, и он бы мог найти все эти номера дверей (и координаты элементов интерфейса наверху), т.е. он подошёл бы больше для этой задачи и дополнительных действий не понадобилось бы, но передумал делать.
Нет планов добавить в игру возможность стрелять под углом не двигаясь?
AnyZero:
Атака клонов. Сделано в старой версии глитчера, в последней в конце вылетает.
Беларус учит русский:
Умеешь же ты заинтриговать недосказанностью :)
Что за игра? Явно Super Star Wars, но у сеговского прототипа другой интерфейс и этого уровня там не увидел.
И какой программой ломал? Инвертер или Переставлятель?
Вылетает что - игра или программа?
AnyZero:
Super Star Wars Holiday Special v.1.0.
Инвертер.
Он не может до конца выяснить адрес, до завершения нескольких оставшихся попыток, он закрывается.
Навигация
Перейти к полной версии