Автор Тема: [SMD] Messida - debugger for IDA Pro  (Прочитано 12218 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
[SMD] Messida - debugger for IDA Pro
« : 12 Июль 2015, 23:26:34 »
Все привет.

Что это: это самый, что ни на есть, дебагер-плагин для 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: начальная версия.

155686-0
« Последнее редактирование: 08 Декабрь 2015, 09:25:04 от DrMefistO »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3264
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #1 : 13 Июль 2015, 20:35:33 »
Проверил, у меня работает.  Спасибо.
Будут баги - отпишу.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #2 : 14 Июль 2015, 01:34:48 »
Обновил до версии 1.1. Тестируйте, не стесняйтесь.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #3 : 14 Июль 2015, 20:02:59 »
Добрый DrMefistO продолжает радовать нас своим трудом. Спасибо огромное)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #4 : 15 Июль 2015, 09:51:33 »
worm, да пожалуйста. Только вы отзывы не забывайте оставлять.

Добавлено позже:
Обновил до версии 1.2. В шапке список изменений.
« Последнее редактирование: 25 Апрель 2026, 02:33:13 от Беларус »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #5 : 07 Август 2015, 05:17:18 »
Есть вопрос, касательный сохранения настроек. Каждый раз при запуске отладки, настройки выставляются по умолчанию, т.е. не сохраняются, приходится заново настраивать джойстик. Есть возможность что-то с этим сделать?) Спасибо)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #6 : 07 Август 2015, 09:47:38 »
Возможно, туда, где сейваются настройки, а они в последней версии кладутся в каталог с плагином, нет прав для записи? У меня IDA лежит на диске D:, и успешно сейвает насколько я помню. Вечером проверю, но я почти уверен, что я прав)

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #7 : 08 Август 2015, 10:10:27 »
Спасибо))
« Последнее редактирование: 08 Август 2015, 10:29:19 от worm »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #8 : 20 Август 2015, 23:22:14 »
Добавил ссылку на исходники.

Добавлено позже:
Обновил версию до 1.3. Изменения в шапке и на гитхабе.
« Последнее редактирование: 25 Апрель 2026, 02:33:29 от Беларус »

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1574
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #9 : 28 Август 2015, 14:55:22 »
DrMefistO, если за основу взят MESS/MAME, то по сути можно запилить универсальный дебаггер для всех поддерживаемых платформ?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #10 : 28 Август 2015, 15:08:06 »
s1nka, ну, тут есть ограничения. Собирать все равно нужно будет в полу-ручном режиме.
Регистры, и все такое. А так да, идея эта меня уже посещала. Сделать можно, но отдельно дебагер-для каждой платформы. Архитектура иды другие не поддерживает.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #11 : 02 Сентябрь 2015, 21:00:54 »
DrMefistO, я все никак не нарадуюсь, Вы воплотили мою мечту в жизнь)
Спасибо Вам еще раз. Теперь, если "проиграть" все участки рома, можно получить полный, 100% корректный сорс, за исключением массивов указателей, которые, к сожалению, остаются нетронутыми процессором по известным причинам. Можно ли каким-нибудь образом научить IDA корректно определять их или лучше, все таки, это делать вручную? И еще вопрос, возможно ли отключить ram область, чтобы все ram адреса были отображены по типу $FFFFAB30 вместо word_FFFFAB30 (так, как это можно сделать без loader'a, сняв галочку)? Еще хотелось бы полноэкранный режим в будущем, если это возможно и не займет много усилий - захотелось поиграть, садишься и забываешь обо всем, а игра себе потихонечку дизассемблируется :3
« Последнее редактирование: 02 Сентябрь 2015, 21:15:20 от worm »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #12 : 03 Сентябрь 2015, 10:02:49 »
Цитата: worm
Можно ли каким-нибудь образом научить IDA корректно определять их или лучше, все таки, это делать вручную?

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

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

Добавить можно. Но обратно без остановки эмуляции не переключиться. Просто в MESS самой возможности переключаться между фулскрином и оконным режимом нету.
« Последнее редактирование: 03 Сентябрь 2015, 10:10:21 от DrMefistO »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #13 : 03 Сентябрь 2015, 19:44:52 »
Если ты мне опишешь логику определения таких указателей относительно остального кода, я ее реализую.
Пока, к сожалению, только на глаз могу определить(
Цитата
Если ты юзаешь именно мой smd_loader.plw, то там галка эта снята по-умолчанию.
Именно Ваш, версия IDA 6.5
Ну это не существенно, дебаггер и без того хорош)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #14 : 03 Сентябрь 2015, 21:50:50 »
Окей, будем на Вы)
Можно пример, когда делается что-то не так, как хотелось с адресами? По шагам, чтобы я проверил.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1387
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #15 : 04 Сентябрь 2015, 14:29:02 »
DrMefistO, А для TurboGrafx-16/PC-Engine реально такой сделать?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #16 : 04 Сентябрь 2015, 15:00:30 »
evgeny, если IDA поддерживает егоный проц, и MESS запускает игры для него, то да.
Могу сделать, если эти требования выполняются.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1387
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #17 : 04 Сентябрь 2015, 15:16:09 »
Насколько я понял именно такого типа процессора в IDA нет, есть схожий без 32 специальных комманд.
Т.е. нужен 65SC02 (HuC6280), а есть 65C02. Ну по крайней мере я не увидел нужного. По поводу запускает ли MESS -не знаю, не проверял, но по идее должен, не самая редкая система.
Незнаю может можно как-то плагин написать на основе 65C02, добавить туда комманд дополнительных или использовать 65C02 на крайний случай, если это возможно.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #18 : 04 Сентябрь 2015, 15:18:54 »
evgeny, Можешь проверить в иде 6.6 поддержку проца? Вроде они этот проц уже делали.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1387
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #19 : 04 Сентябрь 2015, 15:31:38 »
Вижу только 65C02. 65SC02 - не вижу.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #20 : 04 Сентябрь 2015, 16:14:49 »
evgeny, исходники 65C02 есть. Если их доработать, то можно и второй поддерживать. Надо только различия найти.
MESS, говорят, поддерживает TurboGrafx.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1387
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #21 : 04 Сентябрь 2015, 16:36:33 »
Как я понял в 65SC02 добавлено 32 комманды.

добавлены инструкции BBR,BBS,RMB,SMB.

« Последнее редактирование: 25 Апрель 2026, 02:34:35 от Беларус »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #22 : 04 Сентябрь 2015, 17:02:58 »
evgeny, а можно источник?

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1387
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #23 : 04 Сентябрь 2015, 17:05:23 »
Вобщем инструкции BBR,BBS,RMB,SMB.
Во вложении вся таблица.

Вероятно 65SC02 еще не учитывает инструкций st0,st1,st2,tai,tam,tma,tdd,tia,tii,tin
они вроде бы под железо приставки заточены. Скорее всего 65SC02 этим отличается от HuC6280.
И в итоге нужен даже не 65SC02, а HuC6280.  В таблице эти инструкции есть.



« Последнее редактирование: 04 Сентябрь 2015, 18:09:18 от evgeny »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #24 : 04 Сентябрь 2015, 19:59:36 »
Окей, будем на Вы)
Да это просто привычка еще с детства - со всеми, с кем мало знаком, на Вы, даже если человек младше)) В принципе, можно и на ты)
Цитата
Можно пример, когда делается что-то не так, как хотелось с адресами? По шагам, чтобы я проверил.
Вот пример кода, который дизассемблируется только после дебаггинга.
move.l  #$B6D6,d7 $B6D6 не определяется как ссылка на массив указателей, исправляется горячей клавишей O.
Естественно, массив указателей остается в виде необработанных байтов)
Вот правильный вариант)
move.l  #unk_B6D6,d7
« Последнее редактирование: 04 Сентябрь 2015, 20:10:49 от worm »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #25 : 04 Сентябрь 2015, 20:51:21 »
worm, а, ну это лучше оставить как есть. И руками колбасить. А то по-дефолту там выдает такой упоротый код, если давать Иде идентификацию таких смещений. Поэтому и убрал. Да, вручную по O.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1141
  • Пол: Мужской
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #26 : 04 Сентябрь 2015, 22:17:59 »
Ну ничего, дебаггер и так выполняет 99% всей работы)
Я с детства мечтал создавать и изменять любимые игры, кто бы знал, что моя мечта сбудется)

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9517
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #27 : 04 Сентябрь 2015, 23:34:16 »
DrMefistO, не надо TurboGrafx, сделай лучше дрим/наоми, а ? в МАМЕ оно тоже более-менее работает.
хотя я буду счастлив и просто от лоадера бинарника рамы, прописывающего сегменты аудио-видео памятей, метки регистров итп.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1301
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #28 : 05 Сентябрь 2015, 00:09:48 »
MetalliC, ну, если ида тянет проц этот, и ты мне дашь инфы по нем, то можно попробовать будет.
А лодырь - тоже надо инфу, и могу сделать.

Добавлено позже:
А пока, зарелизил версию v1.4: https://github.com/DrMefistO/messida/releases/tag/v1.4
  • Added VRAM, VSRAM, CRAM segments;
  • Added VDP registers (Debugger windows->VDP Registers).
« Последнее редактирование: 05 Сентябрь 2015, 02:51:54 от DrMefistO »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9517
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: MESSIDA - Sega Genesis Debugger for IDA Pro (beta testing)
« Ответ #29 : 05 Сентябрь 2015, 13:25:53 »
DrMefistO,
инфа вот
pdf-ка с докой на проц, плюс мои конфиг с метками внутренних регистров, и скриптик который создает сегменты для них (почему-то командами area в конфиге они не создаются)

в ида он обзывается Renesas SH-4 (little endian), модель 7750
думаю что зная М68К разобраться будет не сложно, тут заместо мотороловских отдельных по 8 штук регистров данных и адреса - 16 штук универсальных, последний тоже используется как стек, да и в остальном оно имхо схоже.
шина адреса - 29бит, старшие три бита используются для управления кешем.
т.е. допустим 0x8C000000 или 0x0C000000 - это первый адрес RAM, чтение/запись будет через кеш, 0xAC000000 - тот же адрес, но доступ будет напрямую. к сожалению ида это не хавает ( и считает за разные адреса.

дока на дрим вот , карта памяти на 16й странице

а вот пример базы  - это  VF4 с наоми2 но там те же яйца, только всего по два штука - видеопамятей, регистров, по Program Segmentation я надеюсь будет понятно.

собсно что хотелось бы получить - загрузчик, который будет хавать дамп всей оперативки, спросит куда его грузить (бывает 2 варианта - с 0x8C000000 или 0x0C000000), и потом пропишет сегменты, регистры и тому подобное. т.е. в принципе то же что делают мои sh3.cfg и sh4.idc но в более цивильном виде.

понятно, что всяких регистров много и они для тебя все не знакомые, так что вполне устроит "скелет" загрузчика, со всем основным, в который я уже сам смогу подобавлять еще меток регистров или там сегментов.
« Последнее редактирование: 05 Сентябрь 2015, 13:33:21 от MetalliC »