Важная информация

User Tag List

Показано с 1 по 7 из 7

Тема: Как правильно дизассемблировать игры zx spectrum

  1. #1
    Member
    Регистрация
    07.03.2021
    Адрес
    г. Оренбург
    Сообщений
    33
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Как правильно дизассемблировать игры zx spectrum

    Здравствуйте.
    Как правильно находить где код а где данные?
    Как пользоваться утилитой snaptrace?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    905
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    205
    Поблагодарили
    153 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Аналогичная ранее созданная тема https://zx-pk.ru/threads/31179-kak-p...cheniya-).html
    лучше туда и писать

  4. #3
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zxlogin Посмотреть сообщение
    Как правильно находить где код а где данные?
    В старые добрые времена, когда мне приходилось часто это делать, и из инструментов был монитор, срабатывающий по кнопке NMI, я поступал так:

    1) Запускал программу, нажимал во время ее работы NMI.

    2) Если меня интересовала прерванная часть программы (например, "переход между экранами" в игре Batman The Movie) - то я смотрел сразу дизассемблером в точку, где произошло NMI. Там находился прерванный код. Пробуя дизассмблировать выше точки прерывания, иногда удавалось (по интуиции) найти, откуда начинается интересующая подпрограмма. Можно было еще посмотреть в стек адресов возврата, откуда она была вызвана. Посмотреть туда - и становится видно, по какому адресу ее вызвали.

    3) Если посмотреть дизассемблером в произвольное место памяти - то обычно сразу видно, код там лежит или данные. Если результаты дизассемблирования более-менее осмыслены - то, скорее всего, код. В противном случае - данные. Конечно, бывают трудные случаи, когда первичный осмотр дает неверный результат. Но это встречается редко.

    4) При дизассемблировании всей программы, например с помощью IDA, ключевой момент - это знание точки входа, откуда запускается программа. IDA сама прогоняет код с этого места и размечает те части памяти, которые исполнялись, кодом, а остальные - данными. Конечно, при этом исполнение программы не полное, и еще IDA не видит мест косвенных переходов, переходов по таблицам, самоизменяющегося кода и т.д. Поэтому многое приходится доразмечать вручную. Лучший помощник здесь - интуиция. Попробовал отметить кусок памяти кодом, если абракадабра получается - откатить и продолжать анализ программы.

  5. #4
    Member
    Регистрация
    17.01.2005
    Адрес
    Tomsk, Russia
    Сообщений
    147
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Зачем IDA? Есть же мегарульный STS, в нём можно изучить, отладить и отреверсить 99% спектрумовского софта.

  6. #5
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lzb_j77 Посмотреть сообщение
    Зачем IDA? Есть же мегарульный STS, в нём можно изучить, отладить и отреверсить 99% спектрумовского софта.
    У меня к примеру, STS рандомно зависал, поэтому приходилось использовать MONS. :/
    Но зачем делать шаг назад? IDA позволяет удобно разложить на двух мониторах целый ряд окошек, и удобно расписывать комментарии, не говоря о других плюсах.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  7. #6
    Member
    Регистрация
    05.05.2023
    Адрес
    г. Баку, Азербайджан
    Сообщений
    36
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я предпочитаю IDA DOS версии (3.xx).

  8. #7
    Activist
    Регистрация
    23.02.2005
    Адрес
    Донецк
    Сообщений
    437
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    88
    Поблагодарили
    54 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как правильно - не знаю, могу сказать как это делаю сам. Сначала нужно выяснить, упакован файл или нет, если он упакован - нужно распаковать, как - ну это не здесь. Далее просмотр содержимого с ручкой и блокнотом. В комплект ZAsm'а входит оверлей "helpbeta", им можно посмотреть где данные, например шрифт, спрайты иногда и экран, где собственно код программы. Ну и потом ZX Turbo Disassembler Иноземцева с моими правками. И дальше все там. Здесь лучше почитать оригинальное руководство к программе от автора.
    Все программы можно найти здесь же, каждую в соответствующей ветке. Но получение текстов это далеко не все, а в случае игр это только начало. Далее нужно пытаться понять, что выполняет та или иная подпрограмма, здесь конечно поможет STS.
    Главный враг здесь спешка, мелкими шагами, подпрограмма за подпрограммой, процедура за процедурой и в какой то момент начинаешь понимать, как тут все устроено.

  9. Этот пользователь поблагодарил Rubts0FF за это полезное сообщение:

    Barmaley_m (22.05.2023)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 98
    Последнее: 19.02.2024, 16:47
  2. Ответов: 4
    Последнее: 28.01.2022, 13:25
  3. Как правильно вывести AY, бипер и TAPE со Spectrum +2 Black (ISSUE 4) ?
    от ZX_NOVOSIB в разделе Зарубежные модели
    Ответов: 23
    Последнее: 24.06.2014, 08:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •