Автор Тема: Smd IDA Tools - Sega Mega Drive reversing helpers  (Прочитано 20577 раз)

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

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« : 08 Февраль 2015, 21:16:43 »
Собственно, проект по написанию крутых специфичных плагинов в помощь ромхакерам SMD.

Включает:
 - ROM loader - загрузчик, позволяющий грузить ромы сеги в IDA Pro. Благодарности HardwareMan'у за основу;
 - Z80 sound drivers loader - позволяет загружать звуковые драйвера для Sega в IDA Pro. Автоматически именуются порты и создаются сегменты;
 - Z80 sound drivers debugger - позволяет отлаживать звуковые драйвера в IDA Pro;
 - Gensida debugger - дебагер-плагин который позволяет дебажить ромы Sega Genesis / Mega Drive);
 - Smd Constants identifier - при нажатии на J на константе, отправляемой в какой-либо командный регистр, в комментарий выведется инфа о том, что данное число значит, какие флаги устанавливает;
 - ASM Fixer - помогает при экспортировании листинга из IDA, и приведении его к ассемблируемому виду.
 - Генерация компилируемого ассемблерного листинга для AS/VASM/ASM68K прямо из коробки.

Проект развивающийся, поэтому каждый может предлагать свои идеи, изменения.

Исходники проекта и скомпиленые плагины здесь: https://github.com/lab313ru/smd_ida_tools2/releases
« Последнее редактирование: 26 Январь 2023, 03:03:14 от DrMefistO »

Оффлайн Griever

  • Пользователь
  • Сообщений: 77
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #60 : 26 Январь 2018, 08:28:19 »
DrMefistO, под IDA 7.0 не будешь обновлять?
А что, есть смысл переходить на седьмую Иду?

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #61 : 26 Январь 2018, 08:46:00 »
Не знаю. Я просто вот ноут отремонтировал и установил седьмую иду, так как в теме про Ines loader Мефисто сделал лоудер для 7 иды. Ну я и поставил сразу 7 версию.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #62 : 26 Январь 2018, 09:05:10 »
Для сеги по прежнему 6.8 юзайте)

Оффлайн Марат

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #63 : 26 Январь 2018, 09:11:21 »
Ну я понял. Уже установил.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #64 : 16 Июнь 2018, 19:45:03 »
Долгожданное обновление!

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #65 : 31 Август 2018, 02:15:45 »
Важные обновления! Смотрим шапку.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #66 : 31 Август 2018, 22:44:44 »
Обновил немного PC-relative fix.

Оффлайн worm

  • Пользователь
  • Сообщений: 1065
  • Пол: Мужской
  • Сожру
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #67 : 01 Сентябрь 2018, 15:07:44 »
Док, что там по поводу бластема и 7 иды?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #68 : 01 Сентябрь 2018, 15:16:34 »
Док, что там по поводу бластема и 7 иды?
Всё плохо - если компилить вижуал студией в x64 (а 7-я ида требует x64), то не совпадает конвенция вызовов, и всё идёт в звезду.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #69 : 29 Октябрь 2018, 10:09:30 »
Немного о планах по данному, и другим проектам:

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4388
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #70 : 29 Октябрь 2018, 13:15:29 »
DrMefistO,
хотел посмотреть, но звук свистом периодически уши режет. Применяй фильтры какие-нибудь хоть.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #71 : 29 Октябрь 2018, 13:16:35 »
Хм, странно. Не слышал. А можешь тайминги дать где это слышно?

Оффлайн worm

  • Пользователь
  • Сообщений: 1065
  • Пол: Мужской
  • Сожру
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #72 : 29 Октябрь 2018, 14:04:15 »
Хм, странно. Не слышал. А можешь тайминги дать где это слышно?
Там на самом деле ультразвук, который человеческое ухо услышать не может. Знаешь же свистки есть специальные? :lol:

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #73 : 29 Октябрь 2018, 14:15:03 »
worm, так а серьёзно?

Оффлайн worm

  • Пользователь
  • Сообщений: 1065
  • Пол: Мужской
  • Сожру
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #74 : 29 Октябрь 2018, 14:24:00 »
worm, так а серьёзно?
Ну я свистов не слышал)

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4388
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #75 : 29 Октябрь 2018, 14:44:26 »
Хм, странно. Не слышал. А можешь тайминги дать где это слышно?
"Всем привет, с вами Владимир Мефисто" - все три "с" свистят. Может быть не у всех это слышно - источник воспроизведения (в моём случае динамик смартфона) и слух разные, но вот так. Ради проверки тыкнул пару видео в рекомендуемом, там на букве "с" свиста нет.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #76 : 29 Октябрь 2018, 14:45:23 »
)) странно. ок, буду выравнивать.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #77 : 29 Ноябрь 2018, 23:29:48 »
Обновил версию до 1.23. Куча изменений, о которых лучше читать в описании к релизам на GitHub странице проекта.

Добавлено позже:
Добавил ASM Fixer. Теперь можно экспортировать листинг из IDA и собирать его в разы удобнее!
« Последнее редактирование: 30 Ноябрь 2018, 00:04:11 от DrMefistO »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #78 : 01 Декабрь 2018, 01:09:11 »
Обновил версию до 1.24.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2425
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #79 : 21 Октябрь 2020, 21:04:59 »
пока сообщество мнет сиську видимо все придется делать самому. краем уха слышал что мне это нужно. еще бы теперь понять что именно мне нужно :) по ссылкам вроде бы скачал какой-то архив. в нем две папки plugins и loaders. но нет запускных файлов. ладно, видимо понимать следует буквально - плагин к чему-то и загрузчик к тому-же. раз тема называется ida pro - видимо надо скачать эту самую иду. скачал. какую-то 7.0. ладно, установил. по логике вещей видимо надо те папки плагин и загрузчик втулить в папку с идой - там есть такие папки. у меня хорошее предчувствие... запускаю, выбираю новый проект, указываю путь до рома... и эпик разочарование. в списке нет 68 процессора. всякие амд какие-то и прочие 286. блин... так все хорошо начиналось :)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #80 : 21 Октябрь 2020, 21:21:27 »
Нужна Ида версии 6.8. Плагин и загрузчик нужно кидать в соответствующие папки Иды. Процессор М68000 есть во всех идах.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2425
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #81 : 21 Октябрь 2020, 22:39:01 »
эм... ну как бы оно понятно... что ничего не понятно :) и получается тот кусочек что мне надо подвинуть - скатина важный.

получается если в коде есть такая плашка subroutine - такой кусочек можно сдвинуть. и получается при наведении мышкой на синие и зеленые надписи типа DATA XREF и CODE XREF - оно покажет из какого места прыгает сюда. получается если я переношу этот кусочек, то мне нужно найти те места, которые ссылаются сюда и там изменить адрес на новое местоположение.

но на картинке есть еще "не отформатированное место" - обозначено вопросом. это не subroutine - как это безобразие двигать? ведь оно для чего-то то нужно.


и потом про надписи DATA XREF и CODE XREF - если не только в одном месте сюда ссылаются, а в нескольких - оно все места покажет? или там вручную надо будет искать все остальные?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #82 : 21 Октябрь 2020, 22:47:38 »
Этот вопросный кусок - код, т.к. заканчивается на 4E 75. Советую посмотреть мои видосы по реверсу игр на сегу. Есть тут тема со списком видео. Там это всё разбирается, если смотреть с первого видео.

Добавлено позже:
http://www.emu-land.net/forum/index.php/topic,81112.0.html
« Последнее редактирование: 21 Октябрь 2020, 22:53:43 от DrMefistO »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2425
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #83 : 22 Октябрь 2020, 10:29:18 »
эх... вон там стог сена, иди найди там то, не знай чего... спасибо конечно, но не помогает :) порог вхождения нужен. в моем случае знаний ноль. есть только отдаленные базовые понятия.

Добавлено позже:
вот у меня вопрос. как понять что в ром файле, где есть значение 66 F6 - можно понять что следует прыгнуть на... эээ... получается сколько-то байтов назад?


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

Добавлено позже:
видимо 66 значит что надо ехать. а F6 или F4 в соседнем месте следует читать как .b переменную, то есть -10 и -12. и прыгать надо от конца 66 F6 на это число байт. с этим вроде бы все понятно :)

значит весь вопрос остается лишь в том, чтобы найти все адреса с верхней части рома, которые ссылаются на нижнюю часть. после переместить этот кусок 876 байт из конца рома на место, где раньше лежал первый банк GEMS. сам гемс спустить ниже, после исправить адреса гемс банков и все должно заработать.

Добавлено позже:
синий экрааааааааанн... ты похож на обмаааааааан...

так, ладно. хвост в конце рома начинается с 003FFC94
команда для прыга это по всей видимости jsr.
jsr в роме это 4EB9
получается мне теперь нужно найти все места с сочетанием символов $4EB9003FFC94 и исправить на новое значение. но их по всему рому целая куча :(

пойду пробывать.
« Последнее редактирование: 22 Октябрь 2020, 13:25:35 от SeregaZ »

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #84 : 22 Октябрь 2020, 14:39:14 »
получается мне теперь нужно найти все места с сочетанием символов $4EB9003FFC94 и исправить на новое значение. но их по всему рому целая куча

в иде есть такая чудная функция "List cross references to...", вызывается из контекстного меню или по CTRL+X

сам гемс спустить ниже
как ты уже заметил, GEMS это драйвер, читай программный код который так же вызывается другими функциями, то есть тебе после перемещения его в другое место прийдётся так же искать все функции которые обращаются к GEMS и менять адреса на новые

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1291
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #85 : 22 Октябрь 2020, 15:02:21 »
Говорил же, посмотри видосы. Хочешь более проблемно, не понимая даже на что смотришь.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1106
    • ВКонтакте
    • Steam
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #86 : 22 Октябрь 2020, 15:07:01 »


SeregaZ, попробуй выделить эту неисследованную область и нажми F2 - брейкпоинт (а лучше проанализируй Идой выделенное и/или пробуй создать функцию).
Поиграй в игру, лови все переходы и корректируй. По идее, это можно автоматизировать, но в этом не могу помочь.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2425
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #87 : 22 Октябрь 2020, 15:09:52 »
как ты уже заметил, GEMS это драйвер, читай программный код который так же вызывается другими функциями, то есть тебе после перемещения его в другое место прийдётся так же искать все функции которые обращаются к GEMS и менять адреса на новые
с этим то как раз проблем нет. ежели это конечно не какой-то там кастомный типа Zero Tolerance случай. в МК3 всего 6 адресов 4 стандартных банка плюс дополнительный 1 мелодии и дополнительный 1 сэмплы. но так вышло, что они как раз в том хвосте, который я хочу сдвинуть :) за наводку с перекрестными адресами спасибо. и в этой иде не все рутины размечены почему-то. или не рутины. хотя они видимо имеют свои ссылки с верхней части рома тоже - но иде не видит эти части. (на картинке вопросом обозначено такого рода места)

Добавлено позже:
SeregaZ, попробуй выделить эту неисследованную область и нажми F2 - брейкпоинт (а лучше проанализируй Идой выделенное и/или пробуй создать функцию).
Поиграй в игру, лови все переходы и корректируй. По идее, это можно автоматизировать, но в этом не могу помочь.
это я как раз примерно понял :) не понял только почему сама ида все не разметила... а я типа как к теще на блины бы пришел на все готовое :)

по поводу брейкпоинтов и ловли переходов - увы. порог вхождения в тему у меня низковат. посему я не понимаю о чем речь :) пока вручную буду пытаться править адреса и смотреть что в итоге получается. мне не нужен 100% рабочий ром - мне нужно сэкономить место и попытаться влезть в оригинальные 4 мегабайта, чтоб любой эмулятор потом смог запускать без проблем то что я ему подсуну. задача запилить менеджер звуков и чтобы собиралось все верно. вот для этого мне нужно сдвинуть этот хвост наверх, чтобы потом в конец получившегося рома без музыки - втуливать свою музыку. в совсем крайнем случае я могу выкинуть второй банк сэмплов, оставив хвост - все равно этот второй видимо больше для фаталитей использовался. посмотрим как пойдет.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1106
    • ВКонтакте
    • Steam
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #88 : 22 Октябрь 2020, 15:38:20 »
почему сама ида все не разметила
Не нашла ссылок туда, но по мере игры будет выявляться новый код и вот уже там могут обнаружиться ссылки и эта область станет размеченной.
по поводу брейкпоинтов и ловли переходов
Игра остановится, если код обратится в выделенную и красную зону, брейкпойнт - ловушка. В итоге можно будет увидеть откуда сюда обращаются-переходят.
Но раз не хочешь муторно вылавливать по всему коду, то есть идея оставить вместо первой команды функции прыжок туда, куда перенесёшь эту функцию. Ну и этот самый прыжок будет прямо среди твоего кода и придётся его перепрыгивать :lol:

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2425
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #89 : 22 Октябрь 2020, 16:04:34 »
муторно я бы как раз не хотел :) но это я вроде понял. с прочими же всеми делами надо понимать что делать, а во вторых как это "включить" в самой иде - я тоже без понятия :) так что пока буду пытаться что сам понял. а там посмотрим как дальше пойдет. коф налил, орехов погрыз - мозг зарядил - попробую переносить кусочки и смотреть что получается.

Добавлено позже:
факир был пьян - фокус не удался :) вобщем логотип Сега появляется, и потом падыщь синий экран. это конечно прогресс... и звук огня при этом проигрывается. но не тот прогресс о котором я думал :)))

не все адреса видимо нашел... или добавил туда, куда не нужно было добавлять. лишние вписывание видимо.

Добавлено позже:
а еще меня смущает почему адрес банка с инструментами 4EB9003C3436 лежит в куче мест. хотя по идее все должно быть в одном месте... можно конечно вставить туда тоже новый адрес. но я думаю это случайные совпадения... и на графике скажем могут быть артефакты или еще чего :) пойду попробую во все адреса это втулить.

Добавлено позже:
а еще я сам же их туда и вписал :)))))) не помогли орехи с кофами...
« Последнее редактирование: 22 Октябрь 2020, 19:33:10 от SeregaZ »