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

User Tag List

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

Тема: Дизассемблирование спектрумовских игр

  1. #1
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Владивосток
    Сообщений
    3,008
    Благодарностей: 1288
    Записей в дневнике
    5
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Дизассемблирование спектрумовских игр

    Решил попробовать получить исходный код одной из ZX-игр. При всей простоте, оказалось, что это довольно трудоёмкий процесс. Я опробовал:

    1. IDA Pro
    2. SPEDIZ
    3. ZX Spin

    Понятное дело, что ни один из этих инструментов не даст вот так сходу получить готовый исходный код. Нужно сидеть и тщательно анализировать строку за строкой, выделяя таблицы, переменные и графику. Безусловно IDA Pro - самый мощный инструмент. Однако очень странно, что нет ни одного эмулятора, который может выдавать более или менее готовый ассемблерный код (или я его не нашёл?), ведь именно эмулятор точно знает, где исполняемый код, который проходит через процессор, а где другие данные, достаточно только один раз прогнать через него исследуемую программу.

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

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

  3. #2
    Banned
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    349
    Благодарностей: 311
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В связи с тем что последнее время периодически занимаюсь переделкой игр под эльфа сложился, небольшой алгоритм по дизасму. Мне не нужно всю игру, а только как правило меню, обработчик клавиатуры, иногда немного механику управления и музыку, поэтому все я не разбираю. Использую IDA Pro, ничего другого в качестве альтернативы не вижу. Немного по шагам.
    1. Разбираю в ZX-Blockeditor оригинальный образ, снимаю защиту, если есть, разбираю на блоки, записываю алгоритм загрузки и запуска.
    2. Делаю отладочный сборщик на асме, собираю в sna, в нем в последующем вношу изменения. При компиляции выгружаю и sna и bin файл только с необходимым кодом
    3. Загружаю bin в иду, разбираю, проставляю метки. Для моих целей на все уходит 3-4 часа, иногда если интересно втыкаю как все там устроено.
    4. Все необходимые исправления компилю поверх бинарников. Патченая игра готова. Далее сборка карика, но это уже совсем не по теме.
    Сейчас делаю nightshade, еще не готово, но в общих чертах понятно как это выглядит.
    Последний раз редактировалось krt17; 11.04.2016 в 18:43.

  4. Эти 2 пользователя(ей) поблагодарили krt17 за это полезное сообщение:
    CityAceE (13.04.2016), perestoronin (13.04.2016)

  5. #3
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    9,965
    Благодарностей: 3444
    Mentioned
    2 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    ведь именно эмулятор точно знает, где исполняемый код, который проходит через процессор, а где другие данные, достаточно только один раз прогнать через него исследуемую программу.
    Не достаточно. Только очень простые программы исполняют весь свой код в течение короткого время после запуска. 99% программ этого не делают, и часть кода может быть вообще не исполнена за время использования вами никогда.
    Однако, какую-то помощь в поиске заведомо исполняемых фрагментов кода эмулятор может все же оказать.

  6. #4
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Владивосток
    Сообщений
    3,008
    Благодарностей: 1288
    Записей в дневнике
    5
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Все необходимые исправления компилю поверх бинарников.
    Чем производится компиляция?

    Цитата Сообщение от krt17 Посмотреть сообщение
    Сейчас делаю nightshade, еще не готово, но в общих чертах понятно как это выглядит.
    Увы, посмотреть не смог:


    Цитата Сообщение от Titus Посмотреть сообщение
    Однако, какую-то помощь в поиске заведомо исполняемых фрагментов кода эмулятор может все же оказать.
    Вот именно такие случая я и имею ввиду.
    С уважением, Станислав.

  7. #5
    Banned
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    349
    Благодарностей: 311
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Чем производится компиляция?
    Компилить sjasmplus. Я делаю incbin оригинального кода, а поверх org'ами с кодовыми вставками вношу изменения. Это позволяет, если что где напутал, видеть полный список изменений и не искать по бинарнику.
    Цитата Сообщение от CityAceE Посмотреть сообщение
    Увы, посмотреть не смог:
    Ничего не знаю, честно скачал с сайта проверенного хакером Димой.

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

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

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

Похожие темы

  1. Netplay для Спектрумовских игр
    от CityAceE в разделе Эмуляторы
    Ответов: 5
    Последнее: 20.06.2008, 01:21
  2. Ответов: 25
    Последнее: 21.03.2008, 07:57
  3. Ответов: 11
    Последнее: 12.09.2007, 10:07
  4. Ответов: 3
    Последнее: 04.01.2007, 10:07

Ваши права

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