Разработка и ромхакинг > Ромхакинг и программирование
Messida - Sega Genesis Debugger for IDA Pro
(1/4) > >>
DrMefistO:
Все привет.

Что это: это самый, что ни на есть, дебагер-плагин для IDA Pro, чтобы отлаживать ромы для Sega Mega Drive / Genesis. Основан на, и собирается из исходников MESS.

Релизы тут: https://github.com/lab313ru/messida/releases
Исходник: https://github.com/lab313ru/messida/

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

Как использовать:
Желательно установить отсюда последние версии дополнительных модулей в помощь реверсеру: https://github.com/DrMefistO/smd_ida_tools/releases
Затем, из вложения качаете plw-файлик и кладете его в папку plugins вашей IDA Pro (версия не ниже 6.5). Открываете ром, в дебагерах выбираете плагин MESSIDA.

В меню Debug->Process options можно установить дополнительные флаги, которые понимает эмулятор MESS. По умолчанию передаются флаги:
"-debug -cart {путь_до_открытого_рома}", их поменять не выйдет. Ну и установленный по умолчанию "genesis", но его можно сменить на другую SMD-версию (чтобы регион учитывать).

История версий (бета тестирование):
Версия 1.5.5: Адаптировано под IDA v6.8, и свежие исходники MAME;
Версия 1.5.3: Добавлен MAME CLI интерпретатор в IDA. Теперь можно вводить команды MAME дебагера и видеть его консоль прямо в IDA. Некоторые улучшения в VDP VRAM окне. Пофикшен старый баг, когда бряка в цикле срабатывала только один раз. Пофикшено продолжение эмуляции после брейкпоинтов. Пофикшены бряки на read/write памяти.
Версия 1.5.2: добавлено VDP VRAM окно из Gens'а. Теперь окно MAME дебагера тоже отображается при старте эмуляции. Добавлена версия плагина для x64 версии IDA;
Версия 1.4.2: исправлено продолжение запуска эмуляции после первого бряка; исправлено отображение содержимого памяти для всех регионов;
Версия 1.4.1: добавлено отображение текущей позиции записи в VRAM. Исправлено отображение адреса WINDOW;
Версия 1.4: добавлены регионы на VRAM, VSRAM, CRAM. Добавлено отображение регистров VDP (Debugger windows->VDP Registers);
Версия 1.3: исправлен перезапуск процесса отладки, запись в консоль, открытие и закрытие консоли. Исправлен пункт меню выполнения MESS команд;
Версия 1.2: выполненные инструкции теперь отмечаются - можно легко находить код, которые никогда не выполняется. Исправлено выполнение по шагам. Исправлен вывод в консоль. Добавлена возможность выполнять команды дебагера MESS (в меню Debugger). Исправлены другие баги;
Версия 1.1: исправлен повторный запуск в том же сеансе. Исправлено сохранение конфига - теперь в каталоге с конфигом. Жрет меньше проц;
Версия 1.0: начальная версия.

Ti_:
Проверил, у меня работает.  Спасибо.
Будут баги - отпишу.
DrMefistO:
Обновил до версии 1.1. Тестируйте, не стесняйтесь.
worm:
Добрый DrMefistO продолжает радовать нас своим трудом. Спасибо огромное)
DrMefistO:
worm, да пожалуйста. Только вы отзывы не забывайте оставлять.
DrMefistO:
Обновил до версии 1.2. В шапке список изменений.
worm:
Есть вопрос, касательный сохранения настроек. Каждый раз при запуске отладки, настройки выставляются по умолчанию, т.е. не сохраняются, приходится заново настраивать джойстик. Есть возможность что-то с этим сделать?) Спасибо)
DrMefistO:
Возможно, туда, где сейваются настройки, а они в последней версии кладутся в каталог с плагином, нет прав для записи? У меня IDA лежит на диске D:, и успешно сейвает насколько я помню. Вечером проверю, но я почти уверен, что я прав)
worm:
Спасибо))
DrMefistO:
Добавил ссылку на исходники.
DrMefistO:
Обновил версию до 1.3. Изменения в шапке и на гитхабе.
s1nka:
DrMefistO, если за основу взят MESS/MAME, то по сути можно запилить универсальный дебаггер для всех поддерживаемых платформ?
DrMefistO:
s1nka, ну, тут есть ограничения. Собирать все равно нужно будет в полу-ручном режиме.
Регистры, и все такое. А так да, идея эта меня уже посещала. Сделать можно, но отдельно дебагер-для каждой платформы. Архитектура иды другие не поддерживает.
worm:
DrMefistO, я все никак не нарадуюсь, Вы воплотили мою мечту в жизнь)
Спасибо Вам еще раз. Теперь, если "проиграть" все участки рома, можно получить полный, 100% корректный сорс, за исключением массивов указателей, которые, к сожалению, остаются нетронутыми процессором по известным причинам. Можно ли каким-нибудь образом научить IDA корректно определять их или лучше, все таки, это делать вручную? И еще вопрос, возможно ли отключить ram область, чтобы все ram адреса были отображены по типу $FFFFAB30 вместо word_FFFFAB30 (так, как это можно сделать без loader'a, сняв галочку)? Еще хотелось бы полноэкранный режим в будущем, если это возможно и не займет много усилий - захотелось поиграть, садишься и забываешь обо всем, а игра себе потихонечку дизассемблируется :3
DrMefistO:

--- Цитата: worm ---Можно ли каким-нибудь образом научить IDA корректно определять их или лучше, все таки, это делать вручную?
--- Конец цитаты ---

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

--- Цитата: worm ---И еще вопрос, возможно ли отключить ram область, чтобы все ram адреса были отображены по типу $FFFFAB30 вместо word_FFFFAB30 (так, как это можно сделать без loader'a, сняв галочку)?
--- Конец цитаты ---

По моему, мой лоадер эту фигню успешно убирает (если я о той думаю). Если ты юзаешь именно мой smd_loader.plw, то там галка эта снята по-умолчанию.

--- Цитата: worm ---Еще хотелось бы полноэкранный режим в будущем, если это возможно и не займет много усилий - захотелось поиграть, садишься и забываешь обо всем, а игра себе потихонечку дизассемблируется :3
--- Конец цитаты ---

Добавить можно. Но обратно без остановки эмуляции не переключиться. Просто в MESS самой возможности переключаться между фулскрином и оконным режимом нету.
worm:

--- Цитата: DrMefistO от 03 Сентябрь 2015, 10:02:49 ---Если ты мне опишешь логику определения таких указателей относительно остального кода, я ее реализую.

--- Конец цитаты ---
Пока, к сожалению, только на глаз могу определить(

--- Цитата ---Если ты юзаешь именно мой smd_loader.plw, то там галка эта снята по-умолчанию.
--- Конец цитаты ---
Именно Ваш, версия IDA 6.5
Ну это не существенно, дебаггер и без того хорош)
DrMefistO:
Окей, будем на Вы)
Можно пример, когда делается что-то не так, как хотелось с адресами? По шагам, чтобы я проверил.
evgeny:
DrMefistO, А для TurboGrafx-16/PC-Engine реально такой сделать?
DrMefistO:
evgeny, если IDA поддерживает егоный проц, и MESS запускает игры для него, то да.
Могу сделать, если эти требования выполняются.
evgeny:
Насколько я понял именно такого типа процессора в IDA нет, есть схожий без 32 специальных комманд.
Т.е. нужен 65SC02 (HuC6280), а есть 65C02. Ну по крайней мере я не увидел нужного. По поводу запускает ли MESS -не знаю, не проверял, но по идее должен, не самая редкая система.
Незнаю может можно как-то плагин написать на основе 65C02, добавить туда комманд дополнительных или использовать 65C02 на крайний случай, если это возможно.
Навигация
Главная страница сообщений
Следующая страница

Перейти к полной версии