| Разработка и ромхакинг > Ромхакинг |
| Smd IDA Tools - Sega Mega Drive reversing helpers |
| << < (9/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 |
| Turbo2000:
Ого, спасибо больше за информацию, буду все смотреть А почему SDL? Он пользовательские шейдера не поддерживает из коробки |
| Беларус учит русский:
--- Цитата: Turbo2000 от 17 Июль 2023, 00:29:03 ---А почему SDL? --- Конец цитаты --- Потому что у него значительно больше возможностей, он более популярен и распространён, и мне ближе Си. Его давно применяет Valve и разработчики игр. Насчёт шейдеров - я пока не разбирался в тонкостях, но вряд ли они понадобятся в интерфейсе дизассемблера. |
| Turbo2000:
--- Цитата: perfect_genius от 17 Июль 2023, 14:41:15 ---Потому что у него значительно больше возможностей, он более популярен и распространён, и мне ближе Си. Его давно применяет Valve и разработчики игр. Насчёт шейдеров - я пока не разбирался в тонкостях, но вряд ли они понадобятся в интерфейсе дизассемблера. --- Конец цитаты --- Могут понадобиться эффекты, мне понадобилось для эмуляции сеговской палитры. А благодаря чему игра выстраивается в понятный и аккуратный граф, все равно же неизвестно ничего о внутренней структуре, то есть нужен какой-то эврестический анализ, как там дата используется, как структуры строятся, а еще динамические джампы :neznayu: Посмотрел немного capstone, круто, очень быстрый, понятный API, дает детальную информацию по мнемоникам, но больше ничего Добавлено позже: Имею ввиду, что все равно надо дописывать свой статический анализатор и добавлять возможность вручную размечать данные, например, как это сделано в иде Добавлено позже: И получается все зависит от конкретной игры, как они там решили сделать Добавлено позже: Вот у него есть ложные срабатывания на данные, это видимо, надо вручную Добавлено позже: Видимо, на кучу таких вещей и ушел год 0_0 :cool: |
| Turbo2000:
А можете, пожалуйста, объяснить вот такое поведение? Постоянно меняется вид из кода на граф и наоборот, пробую открывать листинг, открывает граф, все галочки снял, ничего не трогал. :-\ |
| SeregaZ:
у меня тож читает только те кусочки, где я точно знаю что лежит код :) прыгать не умеет. но по идее, а я щас диванно икспердное мнение выскажу, предварительно должны быть какие-то команды что копировать в видеопамять, адрес откуда копировать, и длину сколько данных. и тогда делать вывод, что указатель, куда ссылается это безобразие это не очередной прыжок в коде, откуда дальше надо читать код... а именно что графика, и следовательно не разбираем, а просто выделяем этот кусман как графика. но честно говоря подловить такой момент ну не реально :) вот например музыка - GEMS - там тупо 4 указателя друг за другом. как вот понять что здесь идет прыжок на музыку и соответственно разбирать её надо по другому? да, ВаллейБелл сделал детектор GEMS (GEMSScan) и если натянуть сову на глобус, то можно как-то раздуплить раз в игре поймался драйвер GEMS, значит где-то надо искать 4 указателя на банки... но тут второй затык уже внутри семейства GEMS - есть кастомные версии, где банков больше чем стандартные 4. есть версии где 2 байтовые указатели на мелодии или сэмплы, а есть 3 байтовые. это как-то надо выяснить :) в смысле мне то пофиг - сую распаковщику 2 байта - если взбрыкнул, сую 3 байта и готово. но как это полностью автономной программе объяснить? :) без бутылки водки тут не разобраться. |
| Беларус учит русский:
IDAPython может быть поможет. |
| Turbo2000:
--- Цитата: perfect_genius от 19 Июль 2023, 23:32:33 ---IDAPython может быть поможет. --- Конец цитаты --- А в чем преимущество перед нативными плагинами? Кроме того, что язык проще :neznayu: |
| Беларус учит русский:
Не могу сказать, не пользовался. Видимо, преимущество в том, раз нет нужного плагина, то нужное пишешь сам прямо в Иде :) |
| Turbo2000:
В общем, благодаря perfect_genius, появилась идея сделать дополнительное окно визуализации для плагина. Работает без нареканий (Запускаю sdl в отдельном потоке), по идее можно точно так же сделать встроенный эмулятор прям в процесс, чтобы отказаться от межпроцессного взаимодействия через protobuf. Думаю, попробовать хотя бы визуалилировать опткоды во что-нибудь читаемое, или хотя бы подсказки добавить :) И попробовать сделать дерево вызовов более читаемое. |
| Беларус учит русский:
Заинтриговал, но непонятно. Что показывается в этом дополнительном окошечке? И какая конечная цель? |
| Turbo2000:
В общем, идея следующая, сделать контекстную справку, улучшить псевдокод и рисовать удобный граф. Так как можно запускать отдельный поток, и нам доступно все api ida, то есть c помощью функций можно найти весь код, из процессора достать и т.д., не нужна прям отдельная тузла, которая занимается диззасемблингом, уже все есть. Добавлено позже: На видео выше, пока что proof of concept, могу читать код из ida, отправлять его, например в capstone и т.д. (декпомпиляция capstone здесь, конечно излишняя, но просто проверял возможности). Так как графика на sdl, можно что угодно нарисовать Добавлено позже: Добавлено позже: Парсер markdown кривой, можно либо дописать, либо рассмотреть другие варианты, так как нужны контекстные примеры |
| Turbo2000:
А есть возможность посмотреть куда сейчас VDP пишет или читает, по какому смещению? |
| DrMefistO:
Если ты про мной плагин, то да: 1. Декодер команды VDP (нажать J) 2. DMA - DMA_DST "регистр". |
| Turbo2000:
--- Цитата: DrMefistO от 28 Ноябрь 2023, 12:54:43 ---Если ты про мной плагин, то да: 1. Декодер команды VDP (нажать J) 2. DMA - DMA_DST "регистр". --- Конец цитаты --- А, да это видел, в райнтайме тоже работает? :) Если нет, может добавить минитул контекстный? |
| DrMefistO:
да |
| Turbo2000:
--- Цитата: DrMefistO от 28 Ноябрь 2023, 15:38:03 ---да --- Конец цитаты --- Отлично, спасибо, что-то я растерялся, посмотрю DMA_DST |
| Turbo2000:
Привет, а условные брейкпоинты работают? Eсли да: то какой синтаксис на проверку значения регистров? Если нет: то какие были сложности, чтобы это реализовать? Возможно, попробую |
| DrMefistO:
Реализация условных бряков сложна в иде, т.к. нет норм документации. Я начинал, но так и не осилил, т.к. не ясно, как исполняется скрипт для условного бряка, и где это хэндлить. |
| Беларус учит русский:
А в Гидре лучше? |
| DrMefistO:
--- Цитата: perfect_genius от 04 Декабрь 2023, 23:55:54 ---А в Гидре лучше? --- Конец цитаты --- Для гидры у меня нет отладочного плагина. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |