| Разработка и ромхакинг > Ромхакинг |
| Smd IDA Tools - Sega Mega Drive reversing helpers |
| << < (13/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 от 11 Февраль 2025, 19:34:31 ---Придётся при загрузке сейва делать паузу эмуляции и перекидывать в иду? --- Конец цитаты --- Я ещё не программировал для Иды и не знаю, как она общается с отладчиками, что может и не может. Если эмулятор не может сообщить Иде, что она загрузила сейв и сейчас его будет отправлять, то может можно из Иды отправить сообщение эмулятору, чтобы тот завис и чтобы пользователь нажал F5, после чего в Иде нажал скачивание сейва? Так что сейчас делают нажатия в эмуляторе F5 и F8 для Иды? Разве не портит весь процесс в нём? Или может можешь кратко описать что они друг другу пересылают? |
| paul_met:
Может, я чего не понимаю, но чем не устраивает встроенный в эмулятор отладчик? Зачем мучиться с этой "Идой"? |
| Беларус учит русский:
Нет графа, нет комментариев, нет имён функций. И вообще, отладчик тупо дизасмит по пути, а не проходит по всему рому, не изучает его. Т.е. отладчик подходит только для хаков, а не для полного реверса. Что-то из этого есть в MESEN, в FCEUX, но это NES. |
| paul_met:
--- Цитата: perfect_genius от 11 Февраль 2025, 22:48:04 ---Нет графа, нет комментариев, нет имён функций. И вообще, отладчик тупо дизасмит по пути, а не проходит по всему рому, не изучает его. Т.е. отладчик подходит только для хаков, а не для полного реверса. Что-то из этого есть в MESEN, в FCEUX, но это NES. --- Конец цитаты --- А зачем, собственно, понадобился аж полный реверс? Какие-то глобальные цели? |
| Беларус учит русский:
Да, полный, чтобы можно было собирать ром из воссозданного кода. Для больших изменений, чтобы не мучиться "удалением гланд через заднее место", легко двигать код. --- Цитата: DrMefistO от 11 Февраль 2025, 19:34:31 ---менял номер стартового уровня, и попадал на него) --- Конец цитаты --- Мне тоже приходилось так всё время прокладывать дорожку изменениями в роме - пропускал заставки, вместо первого уровня загружался нужный, вместо начального места появления ставил персонажа поближе к месту изучения. |
| DrMefistO:
Ну а так, полезная штука в итоге - экспорт листинга?) |
| Беларус учит русский:
Если спрашиваешь меня, то я ещё не пользовался этим. Сейчас я начинаю полный реверс UMK3 для воссоздания его кода на С++, и одновременно делаю свой аналог Иды. Буду сверяться с ней, и при несоответствиях как раз может понадобиться экспорт листинга. |
| DrMefistO:
Лол) Был один, назвал проект: Gnida (GNU IDA), но проект успешно заброшен. Плюс есть гидра |
| Беларус учит русский:
Ну и название :lol: Явно делал русскоязычный. Я всё же надеюсь, что мне не придётся делать буквально полный аналог Иды и Гидры, а только лишь разбирать их выхлоп. Я тебя когда-то спрашивал про возможность перестраивать блоки в графе Иды, и в сети про это ничего не нашёл. В итоге придётся реверсить формат базы Иды, искать в ней координаты этих блоков :) |
| DrMefistO:
--- Цитата: perfect_genius от 12 Февраль 2025, 21:03:53 ---Ну и название :lol: Явно делал русскоязычный. Я всё же надеюсь, что мне не придётся делать буквально полный аналог Иды и Гидры, а только лишь разбирать их выхлоп. Я тебя когда-то спрашивал про возможность перестраивать блоки в графе Иды, и в сети про это ничего не нашёл. В итоге придётся реверсить формат базы Иды, искать где там координаты этих блоков :) --- Конец цитаты --- Название у неё Ghidra, она от АНБ, с рф её ничего не связывает) |
| Беларус учит русский:
То ли это ты непонятливый, то ли я непонятно пишу :) --- Цитата: DrMefistO от 12 Февраль 2025, 20:48:15 ---Был один, назвал проект: Gnida (GNU IDA), но проект успешно заброшен. Плюс есть гидра --- Конец цитаты --- --- Цитата: perfect_genius от 12 Февраль 2025, 21:03:53 ---Ну и название Явно делал русскоязычный. --- Конец цитаты --- Обычно такое бывает при таком прерывистом диалоге, когда теряется нить разговора, контекст. |
| DrMefistO:
А, я потерял, да:) я забыл, что про Гниду уже разговор) |
| Takamura-kun:
--- Цитата: perfect_genius от 12 Февраль 2025, 20:44:49 ---Сейчас я начинаю полный реверс UMK3 для воссоздания его кода на С++ --- Конец цитаты --- Подожди, так в сети же оригинальные исходники на С есть o_0 причём в нескольких вариациях: 3DO - первая утечка UMK3 (неполная), с официальными .psd файлами N64 - полусырая трилогия. Та, что с бета-ромом с двумя sub-zero. PC - исходники MK3 с готовым билдом. Ну и (просто к слову), аркадный MK2, который написан на ассемблере. Если ты хорошо в C/C++ разбираешься, не проще ли сорс порт сделать? Взять сам движок боя, а всё остальное (меню и т.д.) написать самому. |
| Беларус учит русский:
Хочу именно UMK3, поэтому эти исходники дадут не всё для этого. Также хочется поправить баги версии для Сеги. Но после создания своего кода обязательно посмотрю эти исходники, я их сохранял себе по мере сливов и всё надеялся на слив полных сырцов UMK3. |
| Takamura-kun:
perfect_genius, в таком случае, предлагаю объединить усилия. Я как раз уже начал разбирать оригинальный UMK3 для сеги (хочу чтобы у нас, фанатов мк, собираемый дизасм просто был), какой-то прогресс уже есть. Сейчас, правда, из-за работы всё замедлилось значительно (банально не успеваю даже отдохнуть :lol:), но все равно, совместными усилиями, дело пойдёт быстрее. Что скажешь? |
| Беларус учит русский:
Используешь инструменты этой темы для этого? Допустим, делим игру пополам (кто какие части изучает), а потом нам надо как-то синхронизироваться. У Иды есть функция объединения баз? Если нет, каждому из нас придётся вручную вносить изменения другого? Наверно, можно бы редактировать совместно листинг на ГитХабе, но я им пока не пользовался и не умею. Если же используешь не Иду, то давай в личку. DrMefistO, в Иде есть возможность: -отсортировать функции по популярности? -давать имена функциям на русском языке? Пусть даже хак-мод какой-нибудь. |
| DrMefistO:
А, я потерял, да:) я забыл, что про Гниду уже разговор) --- Цитата: perfect_genius от 13 Февраль 2025, 20:04:02 ---Используешь инструменты этой темы для этого? Допустим, делим игру пополам (кто какие части изучает), а потом нам надо как-то синхронизироваться. У Иды есть функция объединения баз? Если нет, каждому из нас придётся вручную вносить изменения другого? Наверно, можно бы редактировать совместно листинг на ГитХабе, но я им пока не пользовался и не умею. Если же используешь не Иду, то давай в личку. DrMefistO, в Иде есть возможность: -отсортировать функции по популярности? -давать имена функциям на русском языке? Пусть даже хак-мод какой-нибудь. --- Конец цитаты --- Совет от программиста: не давай функциям названий ни на каком языке, кроме английского. Сортировки функций нет. Только если плагины искать специальные. |
| Takamura-kun:
--- Цитата: perfect_genius от 13 Февраль 2025, 20:04:02 ---потом нам надо как-то синхронизироваться. У Иды есть функция объединения баз? Если нет, каждому из нас придётся вручную вносить изменения другого? --- Конец цитаты --- Да банально базу в облако закинуть и держать друг друга в курсе, что "я сейчас буду реверсить, пока не открывай базу" :lol: |
| Беларус учит русский:
--- Цитата: DrMefistO от 11 Февраль 2025, 06:42:21 ---Для патча игрового процесса нужно патчить в хекс редакторе в генсе --- Конец цитаты --- При этом надо, чтобы изменяемая инструкция не была сейчас следующей, иначе не изменится. Сохранение и загрузка работают, но нельзя их делать, когда Ида стоит на паузе, иначе будет рассинхрон - МК3 сразу показала синий экран смерти. Подтвердилось моё подозрение - по ходу игры, в Иде появляются всё новые функции! :ohmy: Из начальных десяток можно набрать потом тысячи. Т.е. это как трейслоггинг в эмуляторах, когда нужно попробовать в игре как можно больше и дальше, чтобы так пройтись по как можно больше коду и данных. Ида может ловить событие создания новой функции, чтобы потом добавлять в их имена метку, или она сильно ограничена? Идея вот в чём: -загрузил ром в Иду, она определила несколько функций. -запускаю игру в Генсе, первые экраны - это заставки игры. Останавливаю процесс на каждой, и каждый раз появляются новые функции, пачками. И вот тут было бы хорошо, если бы Ида при создании каждой функции ставила ему метку в имени от реверсера. Реверсер ждёт следующую заставку и снова ставит на паузу, меняет метку. Таким образом были бы помечены все функции, впервые появившиеся в определённых местах игры, чтобы сразу знать что они могут делать, за что отвечают. Что думаешь? |
| DrMefistO:
Про тейсинг я уже говорил - что набираются новые исполненные инструкции. И это могут быть даже не функции, а просто куски кода где-то посреди данных (обычно так с виртуальными машинами видел). Новые функции проще всего ловить не так, как ты описал, а вот так: 1. Выделяешь табличку с именами функций, либо из вкладки Names, отсортировав по типу данных, копируешь содержимое 2. Сохраняешь список в файлик 3. Дожидаешься следующего обновления, копируешь список снова 4. Сравниваешь в каком-нибудь Total Commander по содержимому, ну или скриптом - находишь различия. Ещё нужно понимать, что некоторые функции выполняются всегда, типа того же VSync, в котором может выполняться что угодно с обновлением графики, палитр и т.п. Так что лучше таки вручную помечать всё, что нужно. И нет, данные через трейсинг не помечаются - только код. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |