PDA

Просмотр полной версии : какой программой удобно ковырять игры?



ondas
24.10.2019, 17:20
какой программой удобно ковырять игры?

goodboy
24.10.2019, 18:33
отладчиком в эмуляторе

Stl75
24.10.2019, 19:30
Привет всем...

STS - Stalker Stealth Monitor -
но игру надо взломать сначала,
Scorpion Shadow Monitor -
сильно нагружает стек...

Отладчиком в эмуляторе -
пока не привык...???
В каждом эмуляторе -
отладчик свой...
И не всегда удобный...???

goodboy
24.10.2019, 20:26
Отладчиком в эмуляторе -
пока не привык...???

я зря. можно легко отследить изменение например ячейки (диапазона) в памяти. (запись/чтение)
надо например найти уменьшение энергии (а она показана полоской) ставишь BreakPoint на запись в это место экрана
и вываливаешься в отладчик когда это произойдёт.
в продвинутых отладчиках можно создавать свои условия. например поймать конкретное число в регистре или вывод в порт.
трудозатрат (по сравнению с STS`ом) гораздо меньше.
хотя я восхищаюсь людьми которые в 80х ломали допустим алькатрас практически на-коленке

ondas
24.10.2019, 20:27
отладчиком в эмуляторе
вот этим?
хотел поменять фамилии игроков
увеличить кол-во врагов
увеличить кол-во туров

goodboy
24.10.2019, 20:31
именно с этим я не знаком.
как вариант сохрани игру после старта в SNA (z80 не подходит, он сжимает данные)
и смотри/ищи тексты в любом удобном hex редакторе

ondas
24.10.2019, 20:35
именно с этим я не знаком.
как вариант сохрани игру после старта в SNA (z80 не подходит, он сжимает данные)
и смотри/ищи тексты в любом удобном hex редакторе

какой эмулятор порекомендуете?

goodboy
24.10.2019, 20:45
SpecEmu / Unreal,
но тут всё зависит от ваших знаний.
что-то можно изменить тупым поиском,
а например для изменения кол-ва врагов/туров уже придётся вникать в код программы

jerri
24.10.2019, 20:52
ondas, используй Unreal Spectrum
IMHO там самый навороченный отладчик.

ondas
24.10.2019, 21:10
адрес 0000008710 вставил свой ник. прикольно. спасибо.

- - - Добавлено - - -


ondas, используй Unreal Spectrum
IMHO там самый навороченный отладчик.

скачал, игры не запускает,

Bedazzle
25.10.2019, 07:02
вот этим?

Лично мне нравится отладчик встроенный в EmuzWin. По сравнению с Unreal по крайней мере, не требуется изучение кучи горячих клавиш, и можно сразу заниматься полезным делом.



хотел поменять фамилии игроков
увеличить кол-во врагов
увеличить кол-во туров

Это может быть не так легко, как на первый взгляд кажется. К примеру, количество врагов может оказаться не просто циферкой, а выделенным под них буфером в области памяти. И тогда придётся менять не только число врагов и размер буфера, но и смотреть код, который отвечает за обращение к буферу.

Eltaron
25.10.2019, 08:19
Хех, прямо детство вспомнил. Ищешь последовательность 50, 40, 40, 36 (значения защиты тяжелого бронежилета, какую только хрень не помнишь даже спустя 20 лет) , меняешь на 255, 255, 255, 255, становишься бронебойным и в одно рыло крушишь всю базу нахрен. Ну да, и имя поменять, как без этого.



увеличить кол-во врагов
Это довольно сложно. Там же не просто байт, который увеличил и получил набитую врагами базу. Каждый враг описывается целой структурой, где хранится его имя, параметры, начальные координаты. Для создания новых врагов нужно вставить еще несколько таких структур после имеющихся. И только потом менять байт количества врагов. Но там наверняка будет проблема с тем, что сразу за описанием врагов в памяти лежит что-то нужное, и вставлять описания новых просто некуда. Придётся перемещать весь этот массив и менять указатели, которые на него ссылаются. На этом этапе окажется, что перемещать некуда, так как вся память и так забита, и начнутся попытки как-то её выкроить.

Иначе почему, думаете, вы пятый уже, кажется, год приходите с этим вопросом, а никто не отзывается? Там веселья на пару дней работы разбирающегося человека. У вас, судя по всему, уйдет месяц минимум.

ZX_NOVOSIB
25.10.2019, 10:38
вы пятый уже, кажется, год
Двенадцатый год пошёл. Узбекские хакеры - самые суровые хакеры в мире :)

ondas
26.10.2019, 16:40
Там веселья на пару дней работы разбирающегося человека. У вас, судя по всему, уйдет месяц минимум.
явный комплимент в мою сторону. :D

ondas
26.10.2019, 20:15
ТОВАРИЩИ вопрос есть.
пример в игре лазер сквейд снял sna , следующим тур снова снял sna , как удобнее посмотреть изменения за 1 тур?

goodboy
26.10.2019, 21:20
Files/Compapre content / TotalCommander
на самом деле многие с это начинали, скидывали память magic`ом и сравнивали значения

ondas
26.10.2019, 21:50
вопрос почему текст как-то кирилический? где тут неправильно делаю?
спасибо.

transman
28.10.2019, 04:53
почему текст как-то кирилический?
Поставь галочку "двоичный"

ondas
28.10.2019, 09:22
Усем привет, после ковыряний удалось увеличить продолжительность тура до 300 туров.
сохранил 12 и 13 туры, сравнил, был 0C стал 0D , последовательно получается, поменял на значение 99,
но возникает проблема, когда эту уровень доигрываю и выбираю этот же или другой уровень кол-во туров возвращается до стока. или дефолтного. короче говоря сбрасывается до заводского.
подксажите адрес копать. спасибо.

ZX_NOVOSIB
28.10.2019, 10:06
ondas, как вариант можно с помощью Art Money каждый раз находить нужное значение и корректировать его.

Eltaron
28.10.2019, 11:35
Усем привет, после ковыряний удалось увеличить продолжительность тура до 300 туров.
сохранил 12 и 13 туры, сравнил, был 0C стал 0D , последовательно получается, поменял на значение 99,
но возникает проблема, когда эту уровень доигрываю и выбираю этот же или другой уровень кол-во туров возвращается до стока. или дефолтного. короче говоря сбрасывается до заводского.
подксажите адрес копать. спасибо.
Отличный прогресс!

Теперь берем отладчик в эмуляторе и пытаемся найти, где же в оперативной памяти лежит тот кусок памяти, который был поправлен в SNA. Проще всего поиском, ищем какую-нибудь последовательность байт. В вашем случае можно прямо по 05 05 00 00 0С искать. В общем, у меня оказалось, что этот ваш байт соответствует адресу в памяти #B711.

Сейчас нужно поставить точку останова на чтение или запись по этому адресу в памяти. Это почему-то не очень частая функция в отладчиках, но в Unreal Speccy есть. Идем в отладчик (ESC), жмем Alt+C, вводим в правое окно наш адрес, жмем обе галки, добавляем.

https://b.radikal.ru/b25/1910/96/7604b2dd428a.png (https://radikal.ru)

Выходим из отладчика (ESC) и начинаем играть. В один из моментов наша точка останова сработает и программа тормознется в том коде, который попробует прочитать (чаще) или записать (реже) нашу ячейку. Тут нужно базовое знание ассемблера для того, чтобы примерно понять, что вокруг происходит. Если ничего интересного, то жмем ESC и ждем следующего срабатывания. Но может быть и что-то нужное, например, чтение ячейки и сравнение её с какой-то другой:

https://b.radikal.ru/b34/1910/c7/1a5c5ef528c2.png (https://radikal.ru)

В этом случае смотрим, что располагается по сравниваемому адресу (B701). И нам сразу повезло! Там 0x1E, то есть 30. Искомое количество ходов!
Меняем его на FF и вуаля!

https://d.radikal.ru/d37/1910/50/bc6cbdbf9a0f.png (https://radikal.ru)

Дальше надо попробовать найти окружающую этот байт последовательность в SNA-файле (ну или просто, зная, что B711 минус B701 - это 0x10, то есть 16, идем по смещению от уже известного нам своим расположением в SNA счетчика ходов) и поменять. Готово, теперь у нас есть рабочий образ игры, в которой навсегда забито 255 ходов.

ondas
28.10.2019, 19:54
Eltaron большое спасибо, мониторь пожалуйста эту тему.

ondas
29.10.2019, 08:57
В вашем случае можно прямо по 05 05 00 00 0С искать. В общем, у меня оказалось, что этот ваш байт соответствует адресу в памяти #B711.


Eltaron ЕСЛИ можно тут по подробнее, заранее спасибо.
я немного экспериментировал с упоминаемый Вами последовательностью брони. и вот что получилось.
https://c.radikal.ru/c18/1910/1b/8078acaadfdf.jpg (https://radikal.ru)

Eltaron
29.10.2019, 10:19
Eltaron ЕСЛИ можно тут по подробнее, заранее спасибо.
SNAпка содержит слепок памяти. Но там сколько-то занимает заголовок файла, сколько-то состояние регистров и портов, а ROM части там нет вообще. В итоге прямое соответствие между смещением данных в файле и адресом спектрума, по которому в памяти эти данные лежали, отсутствует. Чтобы понять, где находится ваш найденный байт счетчика туров, нужно или разбираться с форматом SNA, или попробовать в лоб найти совпадение последовательностей из файла в памяти.

Для этого открываем последнюю снапку (где 13 тур) эмулятором, идем в отладчик и ищем последовательность. 05 05 00 00 0С - это четыре байта, лежащие до счетчика туров, и сам счетчик. Раз эта последовательность есть в файле, то должна быть и в памяти, из которой он был получен. Поиск по данным в Unreal это Ctrl+F7. Забиваем то, что ищем в поле "code:" (без пробелов), в поле "mask:" вбиваем FF по количеству байт, которые ищем (1 - FF, 2 - FFFF, и т.д.). В Unreal последовательность для поиска ограничена четырмя байтами, поэтому ищем "05050000" или "0500000C"

ondas
29.10.2019, 13:44
https://d.radikal.ru/d24/1910/d7/a3fd8410d2f9.jpg (https://radikal.ru)

https://b.radikal.ru/b34/1910/5b/7234d9655cc7.jpg (https://radikal.ru)

МОНСТР :)

ЭЛТАРОНУ И ВСЕМ СПАСИБО!

ondas
29.10.2019, 16:28
В этом случае смотрим, что располагается по сравниваемому адресу (B701). И нам сразу повезло! Там 0x1E, то есть 30. Искомое количество ходов!

Извините, а где Вы увидели 0x1E ? я в упор не вижу на Ваших скринах.

Eltaron
29.10.2019, 17:29
Извините, а где Вы увидели 0x1E ? я в упор не вижу на Ваших скринах.
Как и написано, по адресу 0xB701

https://b.radikal.ru/b02/1910/97/637231bb5498.png (https://radikal.ru)

TomCaT
29.10.2019, 19:29
просто на том скрине оно уже было поменяно, #B701 = #FF

ondas
29.10.2019, 20:12
за пару дней я научился азам Eltaron и всем спасибо
когда жена ругается что я старый заглядываю на молодых девушек теперь я отвечаю что мне 33 лет.

0x33

Bedazzle
29.10.2019, 23:22
SNAпка содержит слепок памяти. Но там сколько-то занимает заголовок файла, сколько-то состояние регистров и портов, а ROM части там нет вообще. В итоге прямое соответствие между смещением данных в файле и адресом спектрума, по которому в памяти эти данные лежали, отсутствует. Чтобы понять, где находится ваш найденный байт счетчика туров, нужно или разбираться с форматом SNA, или попробовать в лоб найти совпадение последовательностей из файла в памяти.


По 128му не скажу, пока не требовалось.
48я тапка длина 49179 байт. Доступная память в спеке (также и ряд игрушек) длина 49152. Вычитаем одно из другого, получаем 27 байт заголовок (регистры, стек, состояние прерываний, бордюр).

Eltaron
30.10.2019, 10:16
По 128му не скажу, пока не требовалось.
48я тапка длина 49179 байт. Доступная память в спеке (также и ряд игрушек) длина 49152. Вычитаем одно из другого, получаем 27 байт заголовок (регистры, стек, состояние прерываний, бордюр).
Ага, и всё сходится.
772С (смещение, которое ondas нашел в SNA) и B711 (реальный адрес в памяти) преобразуются друг в друга как
0x772C - 27 + 16384 = 0xB711

ondas
31.10.2019, 13:50
Уважаемые гуру прошу сюда (https://zx-pk.ru/threads/30972-prezident-ne-umeret-ot-starosti.html?p=1032266#post1032266). нид хелп.
админы думаю будет лучше если данную эту тему объеденить с этой (https://zx-pk.ru/threads/8328-lazer-skvejd-odnoobrazie-khodov.html)

ondas
04.11.2019, 19:21
https://d.radikal.ru/d38/1911/9d/8deec24f6c48.jpg (https://radikal.ru)
https://c.radikal.ru/c36/1911/1e/7d3ff96151bf.jpg (https://radikal.ru)

https://a.radikal.ru/a10/1911/2b/49e34da873fd.jpg (https://radikal.ru)

https://a.radikal.ru/a13/1911/d1/48a23ca0c578.jpg (https://radikal.ru)

https://d.radikal.ru/d27/1911/b0/69829c72cc5d.jpg (https://radikal.ru)

https://a.radikal.ru/a25/1911/94/1a98d11d6859.jpg (https://radikal.ru)


всем привет, возникла идея сделать так чтоб экран не закрывал ходы компьютерного противника.
я попробовал поиск по коду слова hidd и idde текст HIDDEN MOVEMENT который появляется при ходьбе противника когда закрывается экран. 4 байта вроде максимум поиска.
есть ли возможность сделать открытым ходы противника?
спасибо.

Destr
04.11.2019, 20:16
Походу надо spott ловить а не хиду...
У сквейда эсть соображалище насчёт - видит-ли кто из солдат вражину, тут и думалка - рисовать-ли на экране игроку палево или захидить.
Вот тот самый JP Z и трогать за самое нежное (флаг Z)

ondas
06.11.2019, 12:19
обнаружил возможность сходить за врагов,соответственно узнать где они, для это временно меняем значения адресов (B705) и (B706) . редактировать надо при своем туре.

ondas
26.08.2020, 08:19
Привет всем, появилась идея покопаться в игре президент, в частности чтоб на старте было много денег.
1. как выдрать игру на бейсик
2. как обратно вставить чтоб эмулятор "понимал"
заранее чспасыб.

Eltaron
26.08.2020, 13:10
Привет всем, появилась идея покопаться в игре президент, в частности чтоб на старте было много денег.
1. как выдрать игру на бейсик
2. как обратно вставить чтоб эмулятор "понимал"
заранее чспасыб.
Зачем так сложно?
В любой момент, когда программа не ждет ввода (выводит что-то на экран, например), жмем BREAK (shift+space в эмуле обычно). Или просто пробел в момент запроса "Scroll?". Дальше
LET A=10000
CONTINUE

ondas
25.09.2020, 07:27
Уважаемые гуру нужен совет. как написать бейсик пргоу?
текст набирать на блокноте или на чём?
потом как компилировать.

Andrew771
25.09.2020, 09:02
Как только Спектрум включился, набирай сразу прогу, редактор Бейсика встроен же. Запускать RUN. Ваш К.О.

Bedazzle
25.09.2020, 09:32
Уважаемые гуру нужен совет. как написать бейсик пргоу?
текст набирать на блокноте или на чём?
потом как компилировать.

Например
https://arda.kisafilm.org/blog/?page_id=848&lang=en

Выглядит так:

https://i.imgur.com/BNaJXFu.png


Если требуется компилить (для придания бейсику скорости) нужны отдельные утилиты, за них не скажу.

Oleg N. Cher
25.09.2020, 18:55
Boriel ZX Basic (https://www.boriel.com/pages/the-zx-basic-compiler.html)

Правда, несовместимый с обычным ZX Basic.