какой программой удобно ковырять игры?
Вид для печати
какой программой удобно ковырять игры?
отладчиком в эмуляторе
Привет всем...
STS - Stalker Stealth Monitor -
но игру надо взломать сначала,
Scorpion Shadow Monitor -
сильно нагружает стек...
Отладчиком в эмуляторе -
пока не привык...???
В каждом эмуляторе -
отладчик свой...
И не всегда удобный...???
я зря. можно легко отследить изменение например ячейки (диапазона) в памяти. (запись/чтение)
надо например найти уменьшение энергии (а она показана полоской) ставишь BreakPoint на запись в это место экрана
и вываливаешься в отладчик когда это произойдёт.
в продвинутых отладчиках можно создавать свои условия. например поймать конкретное число в регистре или вывод в порт.
трудозатрат (по сравнению с STS`ом) гораздо меньше.
хотя я восхищаюсь людьми которые в 80х ломали допустим алькатрас практически на-коленке
именно с этим я не знаком.
как вариант сохрани игру после старта в SNA (z80 не подходит, он сжимает данные)
и смотри/ищи тексты в любом удобном hex редакторе
SpecEmu / Unreal,
но тут всё зависит от ваших знаний.
что-то можно изменить тупым поиском,
а например для изменения кол-ва врагов/туров уже придётся вникать в код программы
ondas, используй Unreal Spectrum
IMHO там самый навороченный отладчик.
Лично мне нравится отладчик встроенный в EmuzWin. По сравнению с Unreal по крайней мере, не требуется изучение кучи горячих клавиш, и можно сразу заниматься полезным делом.
Это может быть не так легко, как на первый взгляд кажется. К примеру, количество врагов может оказаться не просто циферкой, а выделенным под них буфером в области памяти. И тогда придётся менять не только число врагов и размер буфера, но и смотреть код, который отвечает за обращение к буферу.
Хех, прямо детство вспомнил. Ищешь последовательность 50, 40, 40, 36 (значения защиты тяжелого бронежилета, какую только хрень не помнишь даже спустя 20 лет) , меняешь на 255, 255, 255, 255, становишься бронебойным и в одно рыло крушишь всю базу нахрен. Ну да, и имя поменять, как без этого.
Это довольно сложно. Там же не просто байт, который увеличил и получил набитую врагами базу. Каждый враг описывается целой структурой, где хранится его имя, параметры, начальные координаты. Для создания новых врагов нужно вставить еще несколько таких структур после имеющихся. И только потом менять байт количества врагов. Но там наверняка будет проблема с тем, что сразу за описанием врагов в памяти лежит что-то нужное, и вставлять описания новых просто некуда. Придётся перемещать весь этот массив и менять указатели, которые на него ссылаются. На этом этапе окажется, что перемещать некуда, так как вся память и так забита, и начнутся попытки как-то её выкроить.
Иначе почему, думаете, вы пятый уже, кажется, год приходите с этим вопросом, а никто не отзывается? Там веселья на пару дней работы разбирающегося человека. У вас, судя по всему, уйдет месяц минимум.
ТОВАРИЩИ вопрос есть.
пример в игре лазер сквейд снял sna , следующим тур снова снял sna , как удобнее посмотреть изменения за 1 тур?
Files/Compapre content / TotalCommander
на самом деле многие с это начинали, скидывали память magic`ом и сравнивали значения
вопрос почему текст как-то кирилический? где тут неправильно делаю?
спасибо.
Усем привет, после ковыряний удалось увеличить продолжительность тура до 300 туров.
сохранил 12 и 13 туры, сравнил, был 0C стал 0D , последовательно получается, поменял на значение 99,
но возникает проблема, когда эту уровень доигрываю и выбираю этот же или другой уровень кол-во туров возвращается до стока. или дефолтного. короче говоря сбрасывается до заводского.
подксажите адрес копать. спасибо.
ondas, как вариант можно с помощью Art Money каждый раз находить нужное значение и корректировать его.
Отличный прогресс!
Теперь берем отладчик в эмуляторе и пытаемся найти, где же в оперативной памяти лежит тот кусок памяти, который был поправлен в SNA. Проще всего поиском, ищем какую-нибудь последовательность байт. В вашем случае можно прямо по 05 05 00 00 0С искать. В общем, у меня оказалось, что этот ваш байт соответствует адресу в памяти #B711.
Сейчас нужно поставить точку останова на чтение или запись по этому адресу в памяти. Это почему-то не очень частая функция в отладчиках, но в Unreal Speccy есть. Идем в отладчик (ESC), жмем Alt+C, вводим в правое окно наш адрес, жмем обе галки, добавляем.
https://b.radikal.ru/b25/1910/96/7604b2dd428a.png
Выходим из отладчика (ESC) и начинаем играть. В один из моментов наша точка останова сработает и программа тормознется в том коде, который попробует прочитать (чаще) или записать (реже) нашу ячейку. Тут нужно базовое знание ассемблера для того, чтобы примерно понять, что вокруг происходит. Если ничего интересного, то жмем ESC и ждем следующего срабатывания. Но может быть и что-то нужное, например, чтение ячейки и сравнение её с какой-то другой:
https://b.radikal.ru/b34/1910/c7/1a5c5ef528c2.png
В этом случае смотрим, что располагается по сравниваемому адресу (B701). И нам сразу повезло! Там 0x1E, то есть 30. Искомое количество ходов!
Меняем его на FF и вуаля!
https://d.radikal.ru/d37/1910/50/bc6cbdbf9a0f.png
Дальше надо попробовать найти окружающую этот байт последовательность в SNA-файле (ну или просто, зная, что B711 минус B701 - это 0x10, то есть 16, идем по смещению от уже известного нам своим расположением в SNA счетчика ходов) и поменять. Готово, теперь у нас есть рабочий образ игры, в которой навсегда забито 255 ходов.
Eltaron большое спасибо, мониторь пожалуйста эту тему.
Eltaron ЕСЛИ можно тут по подробнее, заранее спасибо.
я немного экспериментировал с упоминаемый Вами последовательностью брони. и вот что получилось.
https://c.radikal.ru/c18/1910/1b/8078acaadfdf.jpg
SNAпка содержит слепок памяти. Но там сколько-то занимает заголовок файла, сколько-то состояние регистров и портов, а ROM части там нет вообще. В итоге прямое соответствие между смещением данных в файле и адресом спектрума, по которому в памяти эти данные лежали, отсутствует. Чтобы понять, где находится ваш найденный байт счетчика туров, нужно или разбираться с форматом SNA, или попробовать в лоб найти совпадение последовательностей из файла в памяти.
Для этого открываем последнюю снапку (где 13 тур) эмулятором, идем в отладчик и ищем последовательность. 05 05 00 00 0С - это четыре байта, лежащие до счетчика туров, и сам счетчик. Раз эта последовательность есть в файле, то должна быть и в памяти, из которой он был получен. Поиск по данным в Unreal это Ctrl+F7. Забиваем то, что ищем в поле "code:" (без пробелов), в поле "mask:" вбиваем FF по количеству байт, которые ищем (1 - FF, 2 - FFFF, и т.д.). В Unreal последовательность для поиска ограничена четырмя байтами, поэтому ищем "05050000" или "0500000C"
https://d.radikal.ru/d24/1910/d7/a3fd8410d2f9.jpg
https://b.radikal.ru/b34/1910/5b/7234d9655cc7.jpg
МОНСТР :)
ЭЛТАРОНУ И ВСЕМ СПАСИБО!
Как и написано, по адресу 0xB701
https://b.radikal.ru/b02/1910/97/637231bb5498.png
просто на том скрине оно уже было поменяно, #B701 = #FF
за пару дней я научился азам Eltaron и всем спасибо
когда жена ругается что я старый заглядываю на молодых девушек теперь я отвечаю что мне 33 лет.
0x33
https://d.radikal.ru/d38/1911/9d/8deec24f6c48.jpg
https://c.radikal.ru/c36/1911/1e/7d3ff96151bf.jpg
https://a.radikal.ru/a10/1911/2b/49e34da873fd.jpg
https://a.radikal.ru/a13/1911/d1/48a23ca0c578.jpg
https://d.radikal.ru/d27/1911/b0/69829c72cc5d.jpg
https://a.radikal.ru/a25/1911/94/1a98d11d6859.jpg
всем привет, возникла идея сделать так чтоб экран не закрывал ходы компьютерного противника.
я попробовал поиск по коду слова hidd и idde текст HIDDEN MOVEMENT который появляется при ходьбе противника когда закрывается экран. 4 байта вроде максимум поиска.
есть ли возможность сделать открытым ходы противника?
спасибо.
Походу надо spott ловить а не хиду...
У сквейда эсть соображалище насчёт - видит-ли кто из солдат вражину, тут и думалка - рисовать-ли на экране игроку палево или захидить.
Вот тот самый JP Z и трогать за самое нежное (флаг Z)
обнаружил возможность сходить за врагов,соответственно узнать где они, для это временно меняем значения адресов (B705) и (B706) . редактировать надо при своем туре.
Привет всем, появилась идея покопаться в игре президент, в частности чтоб на старте было много денег.
1. как выдрать игру на бейсик
2. как обратно вставить чтоб эмулятор "понимал"
заранее чспасыб.
Уважаемые гуру нужен совет. как написать бейсик пргоу?
текст набирать на блокноте или на чём?
потом как компилировать.
Как только Спектрум включился, набирай сразу прогу, редактор Бейсика встроен же. Запускать RUN. Ваш К.О.
Например
https://arda.kisafilm.org/blog/?page_id=848&lang=en
Выглядит так:
https://i.imgur.com/BNaJXFu.png
Если требуется компилить (для придания бейсику скорости) нужны отдельные утилиты, за них не скажу.