User Tag List

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

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

  1. #1

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

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

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

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

  3. #2

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  4. #3

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

  5. #4

    Регистрация
    17.01.2005
    Адрес
    Tomsk, Russia
    Сообщений
    151
    Спасибо Благодарностей отдано 
    39
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  6. #5

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 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

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

    По умолчанию

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

  8. #7

    Регистрация
    23.02.2005
    Адрес
    Донецк
    Сообщений
    486
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    115
    Поблагодарили
    74 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    Barmaley_m(22.05.2023)

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

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

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

Похожие темы

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

Ваши права

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