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

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 »

Оффлайн DrMefistO

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

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

Добавлено позже:
или я не правильный асм выбираю при выгрузке?

Как именно ругается на lea? Попробуй другой азм.
src я не правил. Я рассчитываю на сохранение листинга рядом с ромом.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #211 : 08 Февраль 2024, 19:28:25 »
Цитата
src я не правил. Я рассчитываю на сохранение листинга рядом с ромом.
чтоб тебя... это не удобно и не верно с точки зрения безопасности информации. например я открываю чужой разобранный проект, где уже лежит папка src с такими файлами. но сохранить хочу новый переразбор в другой папке. но получится что оригинальную папку ида перезапишет, хотя и кинет lst файл в ту папку куда я и хотел, а вот src перезапишет оригинальную в изначальной папке с ромом.

это первый вариант ассемблера. ошибки сверху не смотри, так как это все равно не тот ассемблер. а вот леа как раз то. пока не добавишь вручную во все места еще FF чтобы стало 8 символов - он не заведется.


Оффлайн DrMefistO

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

это первый вариант ассемблера. ошибки сверху не смотри, так как это все равно не тот ассемблер. а вот леа как раз то. пока не добавишь вручную во все места еще FF чтобы стало 8 символов - он не заведется.


Пробуй другой ассемблер - ссылки там в окошке есть

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2536
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #213 : 08 Февраль 2024, 19:58:33 »
как бы написать и не обидеть... ничего не буду писать.

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #214 : 08 Февраль 2024, 19:59:22 »
как бы написать и не обидеть... ничего не буду писать.
не пиши, не пользуйся. значит не твоё:)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #215 : 28 Февраль 2024, 01:11:31 »
Реализовал условные брейкпоинты на базе того, что предлагает сама Ида! Подробнее тут: https://github.com/lab313ru/smd_ida_tools2/releases/tag/v2.9

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #216 : 28 Февраль 2024, 23:56:59 »
Увидел, шикарно, будет немного боллерплейта, но благодаря питону можно любые условия делать  :cool:

А смотрел как можно реализовать трейс? Хотя бы трейсить вызов конкретного места, и значение операндов на чтение и запись

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #217 : 29 Февраль 2024, 08:08:28 »
Увидел, шикарно, будет немного боллерплейта, но благодаря питону можно любые условия делать  :cool:

А смотрел как можно реализовать трейс? Хотя бы трейсить вызов конкретного места, и значение операндов на чтение и запись
Так ты можешь питоном тоже сделать:
Ставишь бряк, делаешь код там, но делаешь return False и бряк не будет стопариться, но будет отрабатывать код из него

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #218 : 29 Февраль 2024, 09:24:35 »
Хм, гениально, будет, конечно, лишний код, но с этим можно работать

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

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #219 : 29 Февраль 2024, 18:00:54 »
А есть возможность добавить пропуск срабатывания брейкпоинта по определенному адресу? Т.е. допустим я ставлю брейк на чтение по адресу 0xff0000  и у меня срабатывает брейк по адресу 0x1000. Но это место не то, которое мне необходимо и мне надо сделать так, чтобы в этом месте бряк на чтение не срабатывал. На каком тодебагере, сейчас не вспомню, можно было добавлять диапазон адресов, в которых бы ни один брейкпоинт не срабатывал бы. Возможно, fceux. Называлось что то типа "забыть".

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #220 : 29 Февраль 2024, 18:02:58 »
А есть возможность добавить пропуск срабатывания брейкпоинта по определенному адресу? Т.е. допустим я ставлю брейк на чтение по адресу 0xff0000  и у меня срабатывает брейк по адресу 0x1000. Но это место не то, которое мне необходимо и мне надо сделать так, чтобы в этом месте бряк на чтение не срабатывал. На каком тодебагере, сейчас не вспомню, можно было добавлять диапазон адресов, в которых бы ни один брейкпоинт не срабатывал бы. Возможно, fceux. Называлось что то типа "забыть".
Попробуй добавить условие на питоне в виде return False на адрес

Оффлайн Cyneprepou4uk

  • Пользователь
  • Сообщений: 205
  • Пол: Мужской
  • Самый лысый ромхакер
    • ВКонтакте
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #221 : 01 Март 2024, 02:56:00 »
Марат, да, в FCEUX есть такой тип бряка, называется Forbid (запрет). Он запрещает другим брякам срабатывать на указанном CPU адресе или диапазоне адресов.

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

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #222 : 01 Март 2024, 10:24:57 »
Марат, да, в FCEUX есть такой тип бряка, называется Forbid (запрет). Он запрещает другим брякам срабатывать на указанном CPU адресе или диапазоне адресов.
Точно, я почему-то для себя перевёл forbid, как забыть :lol:

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #223 : 01 Март 2024, 15:09:14 »
Вернул предпосмотр тайлов в иде во время статического анализа рома. Теперь можно выбирать и адрес палитры пока смотришь. Билд выкачу попозже.

А вообще, приходите на стрим завтра вечером, расскажу про плагин в целом, что теперь умеет, всякие базовые сценарии рассмотрим, чем может быть полезен.
273520-0

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #224 : 01 Март 2024, 17:52:56 »
Запиши, пожалуйста, стрим
Завтра не получится

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1159
    • ВКонтакте
    • Steam
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #225 : 02 Март 2024, 00:28:50 »
DrMefistO, а сложно будет добавить, чтобы тайлы собирала в картинку?

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #226 : 02 Март 2024, 00:30:51 »
DrMefistO, а сложно будет добавить, чтобы тайлы собирала в картинку?
Есть тайловые редакторы. Это их задача. Предпросмотр тайлов в иде нужен лишь для того, чтобы понимать, что вот это - графика (и какая именно), а вот это - не графика.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
Re: Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #227 : 03 Март 2024, 22:31:37 »
Вернул предпосмотр тайлов в иде во время статического анализа рома. Теперь можно выбирать и адрес палитры пока смотришь. Билд выкачу попозже.

А вообще, приходите на стрим завтра вечером, расскажу про плагин в целом, что теперь умеет, всякие базовые сценарии рассмотрим, чем может быть полезен.
(Ссылка на вложение)
Привет, а был стрим?
На канале ничего

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #228 : 03 Март 2024, 23:18:55 »
Привет, а был стрим?
На канале ничего
привет. неа, я отменил - был занят:)

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #229 : 14 Март 2024, 20:36:52 »
Релизнул новую версию, с Tiles Preview: https://github.com/lab313ru/smd_ida_tools2/releases/tag/v3.0

Если что, IDA Pro v8.3 была ликнута.
« Последнее редактирование: 14 Март 2024, 20:44:48 от DrMefistO »

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

  • Пользователь
  • Сообщений: 556
  • Пол: Мужской
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #230 : 19 Март 2024, 15:13:08 »
Крашится IDA 8,3 на условных брейкпоинтах.
Сначала брейкпоинт срабатывает нормально.
Потом делаешь сброс на эмуляторе, игра доходит до брейкпоинта и IDA крашится.
Содержимое скрипта брейкпоинта
Reg = idaapi.get_reg_val('A0')
return Reg == 0x1A4

Сообщение, которое выскакивает при крахе:
Цитата
Failed to retrieve register value
  File "<string>", line 2, in main
  File "C:\IDA Pro 8.3 (x86, x86_64)\python\3\ida_dbg.py", line 4278, in get_reg_val
    return _ida_dbg.get_reg_val(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Цитата
Oops! internal error 40198 occurred.
Further work is not possible and IDA will close.
Would you like to create a crash dump for a bug report?



Добавлено позже:
И ещё не нашёл где находится TileDataPreview

Оффлайн DrMefistO

  • Пользователь
  • Сообщений: 1294
  • Пол: Мужской
  • Sega Mega Drive reversing
    • Просмотр профиля
Smd IDA Tools - Sega Mega Drive reversing helpers
« Ответ #231 : 19 Март 2024, 15:17:51 »
Крашится IDA 8,3 на условных брейкпоинтах.
Сначала брейкпоинт срабатывает нормально.
Потом делаешь сброс на эмуляторе, игра доходит до брейкпоинта и IDA крашится.
Содержимое скрипта брейкпоинта
Reg = idaapi.get_reg_val('A0')
return Reg == 0x1A4

Сообщение, которое выскакивает при крахе:


Добавлено позже:
И ещё не нашёл где находится TileDataPreview
Спасибо, чекну.
Превью по Shift+D