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

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

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • 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 »

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #180 : 16 Декабрь 2023, 20:24:18 »
Реализация условных бряков сложна в иде, т.к. нет норм документации. Я начинал, но так и не осилил, т.к. не ясно, как исполняется скрипт для условного бряка, и где это хэндлить.
Добавил репликацию кондишина в эмулятор, дописал в библиотеку вычисления выражений поддержку логических выражений, буду пробовать, из самого базового получилось проспускать бряку, если условие не выполняется (Сейчас если есть кондишин, значит условие не выполнилось)
Из сложного:
Непонятно какие операции понадобятся (на вскидку: чтение из регистров разного размера (байт, слово, длинное слово), разыменовывание адресов, чтение из памяти, математические операции, адресные операции (еще не придумал как))
Может какие-то еще чтение из VDP

Добавлено позже:
Там все равно все бряки проверяются и запускаются с эмулятора, а Идовские бряки очень сложные, да

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #181 : 16 Декабрь 2023, 20:27:50 »
Делать их в эмуле очень дорого в плане скорости работы.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #182 : 16 Декабрь 2023, 20:30:20 »
Делать их в эмуле очень дорого в плане скорости работы.
Ну они вроде как компилятся в выражения, попробую, поделюсь результатами, пока смотрю на деббаг сборке, она нереально медленная, да :)

Добавлено позже:
Ну главное, что репликация условия не срабатывает постоянно
Я просто ковырялся в плагине и эмуляторе, и пришел к выводу, что бряки сейчас все равно инициируются со стороны эмулятора

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #183 : 26 Декабрь 2023, 11:39:44 »
Сделал небольшой пруф: https://github.com/lab313ru/smd_ida_tools2/commit/cc4c450faee973177c0db395e03739b875a2a0fc


Добавлено позже:
В целом, можно различной сложности делать условия, надо дописать все регистры, размерности, функции для работы с адресами и другие полезные вещи
« Последнее редактирование: 26 Декабрь 2023, 12:04:02 от Turbo2000 »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #184 : 26 Декабрь 2023, 11:46:19 »
Огонь) Спасибо! Что по скорости?

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #185 : 26 Декабрь 2023, 12:06:28 »
Пока не пробовал на shipping сборке, попробую сегодня вечером или завтра
Могу добавить трассировку по времени исполнения, если условия есть

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

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #187 : 28 Декабрь 2023, 19:42:36 »
Бинари

Добавлено позже:
Длл немного толстая, не убрал от туда SDL

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #188 : 03 Январь 2024, 21:57:27 »
Есть возможность как-то это окно держать открытым?
270445-0

Нужно иследовать везде где идет запись в контроллер VDP, может есть альтернатива?

Добавлено позже:
Добавил action который вызывает open_xrefs_window, помогло

Добавлено позже:
А динамически можно посмотреть, что пишется в VDP_CTRL? Чтобы постоянно справку не смотреть, еще не все изучил  :neznayu:
« Последнее редактирование: 03 Январь 2024, 22:34:58 от Turbo2000 »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #189 : 11 Январь 2024, 13:01:34 »
Есть возможность как-то это окно держать открытым?
(Ссылка на вложение)

Нужно иследовать везде где идет запись в контроллер VDP, может есть альтернатива?

Добавлено позже:
Добавил action который вызывает open_xrefs_window, помогло

Добавлено позже:
А динамически можно посмотреть, что пишется в VDP_CTRL? Чтобы постоянно справку не смотреть, еще не все изучил  :neznayu:
Нажать J на команде.

Добавлено позже:
Саму реализацию пощупаю позже:)
Если надо, дам доступ к гиту в качестве контрибутора.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #190 : 11 Январь 2024, 13:27:51 »
Нажать J на команде.
О, понял, спасибо, думал работает только статически

Добавлено позже:
Саму реализацию пощупаю позже:)
Если надо, дам доступ к гиту в качестве контрибутора.
Пока не надо, там много мусора (дополнительное окно), можно черипикнуть все что касается брейкпоинтов

Добавлено позже:
Как займусь, перенесу в отдельную ветку

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #191 : 11 Январь 2024, 13:30:30 »
Но если значение уже в регистре, то понятно J не сработает.
Ещё J работает командах с SR регистром.

Добавлено позже:
А ещё - с z80.
« Последнее редактирование: 11 Январь 2024, 13:43:29 от DrMefistO »

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #192 : 11 Январь 2024, 14:14:25 »
Но если значение уже в регистре, то понятно J не сработает.
Ещё J работает командах с SR регистром.

Добавлено позже:
А ещё - с z80.
О, даже со стейт регистром, отлично
Спасибо большое

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #193 : 11 Январь 2024, 14:25:22 »
А ещё - с z80: это я имел в виду Z80 BUS запросы из моторолы.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #194 : 12 Январь 2024, 14:04:13 »
А ещё - с z80: это я имел в виду Z80 BUS запросы из моторолы.
Спасибо, исследовать как там работает z80 сам по себе, еще один огромный пласт

Оффлайн nikobonus

  • Пользователь
  • Сообщений: 6
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #195 : 07 Февраль 2024, 18:23:01 »
DrMefistO,

Подскажи пожалуйста, по какой причине может не работать создание ассемблерного листинга?
Есть полностью разобранный ром, выбираю File->Produce file->Create LST file, после чего действительно создается файл.
Но в нем вначале есть вложения:

Цитата
include "src/ports.inc"
include "src/equals.inc"
include "src/ram_addrs.inc"

Этих файлов нигде нет и папки src тоже.

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

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #196 : 07 Февраль 2024, 18:27:18 »
DrMefistO,

Подскажи пожалуйста, по какой причине может не работать создание ассемблерного листинга?
Есть полностью разобранный ром, выбираю File->Produce file->Create LST file, после чего действительно создается файл.
Но в нем вначале есть вложения:

Этих файлов нигде нет и папки src тоже.

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

Можешь скинуть в личку idb, я проверю. Либо поищи сам ещё либо в каталоге с ромом, либо в каталоге с листингом.

Добавлено позже:
Пофиксил билд для 7.7. Просьба перекачать.
« Последнее редактирование: 07 Февраль 2024, 19:20:14 от DrMefistO »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #197 : 07 Февраль 2024, 19:31:18 »
похоже эти строки можно закомментить.

но опять таки старая проблема вылезла:
lea     ($FFF152).w,a0не хватает FF спереди: $FFF152 => $FFFFF152

мде... а дальше все посыпалось при сборке :) видимо нельзя их комментить :) как раз видимо описание этих переменных


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

Добавлено позже:
ахахахаха кнопка отмены не работает в диалоге создания файла :) жму отмена - а Ида все равно ныкается создавать файл :))))

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #198 : 07 Февраль 2024, 19:34:13 »
похоже эти строки можно закомментить.

но опять таки старая проблема вылезла:
lea     ($FFF152).w,a0не хватает FF спереди: $FFF152 => $FFFFF152

мде... а дальше все посыпалось при сборке :) видимо нельзя их комментить :) как раз видимо описание этих переменных


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

Добавлено позже:
ахахахаха кнопка отмены не работает в диалоге создания файла :) жму отмена - а Ида все равно ныкается создавать файл :))))
У тебя какой-то адрес странный, нужно либо две F, либо четыре.
При сборке точно всё посыпется, т.к. с первого раза собрать нереально, не зная особенностей:)

Например, у тебя все ram адрес должны быть помечены как данные, т.е. никаких unk_FFFF

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #199 : 07 Февраль 2024, 19:35:31 »
и экспорт не в LST, а в ASM ваще не происходит. один файл с этими инклудами, а рядышком ничего. так-же папку src создавал. хм. надо видимо папку src создать в виндовс темп и в моих документах. или там или там наверное содержимое появится.

и кстати! а для чего папка script? уж не регистрация ли это каких нужно путей в системе чтобы ида все правильно делала?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #200 : 07 Февраль 2024, 19:37:16 »
о
Обнови плагин из последнего релиза. Я починил создание листинга для 7.7.
ASM создавать не нужно.

Папка script содержит полезные файлы для сборки конккретным азмом. Передаёшь батнику путь к lst-файлу и пойдёт сборка.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #201 : 07 Февраль 2024, 19:45:58 »
рядом с ромом src надо папку создавать. и видимо независимо от того куда путь для создания lst. на диск д сохранял сам файл lst, а эти файлы из инклуда он рядом с ромом положил :) кое кто, не будем показывать пальцем, забыл в диалоге сохранения файла указать этот-же путь для сохранение инклудных файлов.

еще запускал иду от администратора.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #202 : 07 Февраль 2024, 19:47:08 »
рядом с ромом src надо папку создавать. и видимо независимо от того куда путь для создания lst. на диск д сохранял сам файл lst, а эти файлы из инклуда он рядом с ромом положил :) кое кто, не будем показывать пальцем, забыл в диалоге сохранения файла указать этот-же путь для сохранение инклудных файлов.

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #203 : 07 Февраль 2024, 20:01:33 »
при сохранении папки src - используется путь до рома, а не до места сохранения lst. я ж объясняю - выбрал сохранить lst на диске Д, а папку scr он создает рядом с ромом :) в итоге lst и scr разлучены с детства. так то понятно если сохранять lst рядом с самим ромом - то проблемы как бы и нет... но она все-же как бы есть :)

и все так-же не хватает lea FF в начале. асм ругается на эти строки.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #204 : 07 Февраль 2024, 20:02:28 »
и все так-же не хватает lea FF в начале. асм ругается на эти строки.
Не понял.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #205 : 07 Февраль 2024, 20:06:08 »
ида разбирает код как
lea     ($FFF152).w,a0ASM68K.exe при сборке такого файла - ругается что адрес инвалидный. если вручную найти все такие строки и исправить на
lea     ($FFFFF152).w,a0то все начинает собираться без ошибок и работать.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #206 : 07 Февраль 2024, 20:07:33 »
ида разбирает код как
lea     ($FFF152).w,a0ASM68K.exe при сборке такого файла - ругается что адрес инвалидный. если вручную найти все такие строки и исправить на
lea     ($FFFFF152).w,a0то все начинает собираться без ошибок и работать.
А, всё, туплю, адрес правильный. Ты в моём плагине базу начинал, или раньше, руками?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #207 : 07 Февраль 2024, 20:09:33 »
ида 77. версия 32 битная. скачал новую версию тулсов как ты сказал, распаковал и открыл по новой ром батл сити. сам ничего не разбирал - что изначально ида разобрала - то и выгружаю. и там вот с этой lea ошибка. ну и с путями до папки src, в случае если ром лежит в одном месте, а файл lst я сохраняю в другом месте.

Добавлено позже:
и проблема с диалогом отмены при создании lst файла. отмена не работает - ида все равно ныкается создавать файл по новой. то есть в диалоге на моменте выбора вида ассемблера:
Choose output assembler
по идее кнопка отмены должна полностью отменять процесс выгрузки, но тут отмена работает по сути как подтверждение что ты типа выбрал первый вариант AS Assembler и начинает выгружать. но по идее должна была произойти глобальная отмена выгрузки.
« Последнее редактирование: 07 Февраль 2024, 20:16:36 от SeregaZ »

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #208 : 07 Февраль 2024, 20:24:26 »
ида 77. версия 32 битная. скачал новую версию тулсов как ты сказал, распаковал и открыл по новой ром батл сити. сам ничего не разбирал - что изначально ида разобрала - то и выгружаю. и там вот с этой lea ошибка. ну и с путями до папки src, в случае если ром лежит в одном месте, а файл lst я сохраняю в другом месте.

Добавлено позже:
и проблема с диалогом отмены при создании lst файла. отмена не работает - ида все равно ныкается создавать файл по новой. то есть в диалоге на моменте выбора вида ассемблера:
Choose output assembler
по идее кнопка отмены должна полностью отменять процесс выгрузки, но тут отмена работает по сути как подтверждение что ты типа выбрал первый вариант AS Assembler и начинает выгружать. но по идее должна была произойти глобальная отмена выгрузки.
Ида не умеет никак прерывать выгрузку листинга или asm.

Добавлено позже:
Обновил до версии 2.8. Поправил некоторый выхлоп. https://github.com/lab313ru/smd_ida_tools2/releases/tag/v2.8
« Последнее редактирование: 07 Февраль 2024, 20:37:06 от DrMefistO »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #209 : 08 Февраль 2024, 00:00:22 »
ошибки нет? может ты старое по ошибке залил? как ругалась lea при сборке - так и ругается. как создавалось src не там - так и создается. хотя может я чо не туда сохранил еще... еще раз скачаю, перепроверю.

Добавлено позже:
и ни фи га :) все по старому.

Добавлено позже:
или я не правильный асм выбираю при выгрузке?
« Последнее редактирование: 08 Февраль 2024, 00:08:20 от SeregaZ »