| Разработка и ромхакинг > Ромхакинг |
| Smd IDA Tools - Sega Mega Drive reversing helpers |
| << < (12/15) > >> |
| DrMefistO:
Собственно, проект по написанию крутых специфичных плагинов в помощь ромхакерам 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 |
| DrMefistO:
--- Цитата: Марат от 29 Февраль 2024, 18:00:54 ---А есть возможность добавить пропуск срабатывания брейкпоинта по определенному адресу? Т.е. допустим я ставлю брейк на чтение по адресу 0xff0000 и у меня срабатывает брейк по адресу 0x1000. Но это место не то, которое мне необходимо и мне надо сделать так, чтобы в этом месте бряк на чтение не срабатывал. На каком тодебагере, сейчас не вспомню, можно было добавлять диапазон адресов, в которых бы ни один брейкпоинт не срабатывал бы. Возможно, fceux. Называлось что то типа "забыть". --- Конец цитаты --- Попробуй добавить условие на питоне в виде return False на адрес |
| Cyneprepou4uk:
Марат, да, в FCEUX есть такой тип бряка, называется Forbid (запрет). Он запрещает другим брякам срабатывать на указанном CPU адресе или диапазоне адресов. |
| Марат:
--- Цитата: Cyneprepou4uk от 01 Март 2024, 02:56:00 ---Марат, да, в FCEUX есть такой тип бряка, называется Forbid (запрет). Он запрещает другим брякам срабатывать на указанном CPU адресе или диапазоне адресов. --- Конец цитаты --- Точно, я почему-то для себя перевёл forbid, как забыть :lol: |
| DrMefistO:
Вернул предпосмотр тайлов в иде во время статического анализа рома. Теперь можно выбирать и адрес палитры пока смотришь. Билд выкачу попозже. А вообще, приходите на стрим завтра вечером, расскажу про плагин в целом, что теперь умеет, всякие базовые сценарии рассмотрим, чем может быть полезен. |
| Turbo2000:
Запиши, пожалуйста, стрим Завтра не получится |
| Беларус учит русский:
DrMefistO, а сложно будет добавить, чтобы тайлы собирала в картинку? |
| DrMefistO:
--- Цитата: perfect_genius от 02 Март 2024, 00:28:50 ---DrMefistO, а сложно будет добавить, чтобы тайлы собирала в картинку? --- Конец цитаты --- Есть тайловые редакторы. Это их задача. Предпросмотр тайлов в иде нужен лишь для того, чтобы понимать, что вот это - графика (и какая именно), а вот это - не графика. |
| Turbo2000:
--- Цитата: DrMefistO от 01 Март 2024, 15:09:14 ---Вернул предпосмотр тайлов в иде во время статического анализа рома. Теперь можно выбирать и адрес палитры пока смотришь. Билд выкачу попозже. А вообще, приходите на стрим завтра вечером, расскажу про плагин в целом, что теперь умеет, всякие базовые сценарии рассмотрим, чем может быть полезен. (Ссылка на вложение) --- Конец цитаты --- Привет, а был стрим? На канале ничего |
| DrMefistO:
--- Цитата: Turbo2000 от 03 Март 2024, 22:31:37 ---Привет, а был стрим? На канале ничего --- Конец цитаты --- привет. неа, я отменил - был занят:) |
| DrMefistO:
Релизнул новую версию, с Tiles Preview: https://github.com/lab313ru/smd_ida_tools2/releases/tag/v3.0 Если что, IDA Pro v8.3 была ликнута. |
| Марат:
Крашится 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:
--- Цитата: Марат от 19 Март 2024, 15:13:08 ---Крашится IDA 8,3 на условных брейкпоинтах. Сначала брейкпоинт срабатывает нормально. Потом делаешь сброс на эмуляторе, игра доходит до брейкпоинта и IDA крашится. Содержимое скрипта брейкпоинта --- Код: ---Reg = idaapi.get_reg_val('A0') return Reg == 0x1A4 --- Конец кода --- Сообщение, которое выскакивает при крахе: Добавлено позже: И ещё не нашёл где находится TileDataPreview --- Конец цитаты --- Спасибо, чекну. Превью по Shift+D |
| Беларус учит русский:
Возможно ли сделать сохранение и загрузку в дебаггере, чтобы не запускать игру каждый раз сначала? Т.е. сохраняешься, делаешь изменение в коде, смотришь результат, загружаешь сохранение и делаешь уже другое изменение. Как ты реверсил Quackshot? |
| DrMefistO:
Так есть же сейвы, по F5, F8, стандартные для генса. |
| Беларус учит русский:
Ого, и дебаг продолжается без проблем, с места сохранения? :wow: Видимо, в старых версиях это не работало, у меня не получилось тогда. Попробую новую. Добавлено позже: Попробовал, ничего не изменилось. Делаю так: Нажимаю паузу в Иде - видна инструкция, на которой остановилось. Игра останавливается в эмуляторе, сохраняюсь. Убираю паузу в Иде, немного играю, снова ставлю на паузу. Теперь загружаю сохранение - в окне Иды ничего не меняется. Нажимаю F8 и исполняется старый код, т.е. с загрузкой сохранения не обновляется память игры в Иде. Из-за чего игра даже крашится. Надо в Иде память как-то обновлять? |
| DrMefistO:
А, вон ты про что... Изменения в идб статичны - код грузится не из базы иды, а из рома и только при запуске. Для патча игрового процесса нужно патчить в хекс редакторе в генсе, в меню Tools. |
| Беларус учит русский:
Т.е. возвращаемся к вопросу - возможно ли сделать что я имел в виду? Чтобы при загрузке сохранки в эмуляторе, в Иде процесс продолжился с той же инструкции, что и при сохранении? |
| DrMefistO:
--- Цитата: perfect_genius от 11 Февраль 2025, 12:58:27 ---Т.е. возвращаемся к вопросу - возможно ли сделать что я имел в виду? Чтобы при загрузке сохранки в эмуляторе, в Иде процесс продолжился с той же инструкции, что и при сохранении? --- Конец цитаты --- Про то, чтобы с той же инструкции ты не говорил:) в сейве сохраняется состояние регистров, оперативки, видео памяти, звука и прочего. Ром в него не сохраняется. При загрузке сейва берётся ром с файловой системы. А ты хочешь, чтобы брались байты из иды или как? Формат сейвов я менять не буду, так как это поломает совместимость с тасами, если проходить игру самому лень, а исполняемые инструкции получить надо. Решением в твоём случае я вижу GG-коды на инструкции - они применяются всегда, либо патчить ром сразу на фс. Всё равно не понимаю, что не так у тебя с F5/F8. |
| Беларус учит русский:
--- Цитата: DrMefistO от 11 Февраль 2025, 13:07:13 ---А ты хочешь, чтобы брались байты из иды или как? --- Конец цитаты --- Я хочу, чтобы ты переключил внимание на первую часть вопроса - на сохранение и загрузку, а не изменение рома. Надо бы, чтобы когда я загружался с сейва, в Иде я продолжал отладку с той же инструкции, где остановился и сделал сохранение. Т.е. возможно ли из сейва перенести в Иду "сохранённые состояния регистров, оперативки, видео памяти, звука и прочего"? Не понимаю, как ты реверсил Квакшот без этой базовой функции. |
| DrMefistO:
А, теперь понял. Ну, я реверсил так: менял номер стартового уровня, и попадал на него) Насчёт реализуемости твоего вопроса - хз) Придётся при загрузке сейва делать паузу эмуляции и перекидывать в иду? |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |