| Разработка и ромхакинг > Ромхакинг и программирование |
| 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 на крайний случай, если это возможно. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |