| Разработка и ромхакинг > Ромхакинг |
| Smd IDA Tools - Sega Mega Drive reversing helpers |
| << < (10/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:
--- Цитата: DrMefistO от 02 Декабрь 2023, 17:22:52 ---Реализация условных бряков сложна в иде, т.к. нет норм документации. Я начинал, но так и не осилил, т.к. не ясно, как исполняется скрипт для условного бряка, и где это хэндлить. --- Конец цитаты --- Добавил репликацию кондишина в эмулятор, дописал в библиотеку вычисления выражений поддержку логических выражений, буду пробовать, из самого базового получилось проспускать бряку, если условие не выполняется (Сейчас если есть кондишин, значит условие не выполнилось) Из сложного: Непонятно какие операции понадобятся (на вскидку: чтение из регистров разного размера (байт, слово, длинное слово), разыменовывание адресов, чтение из памяти, математические операции, адресные операции (еще не придумал как)) Может какие-то еще чтение из VDP Добавлено позже: Там все равно все бряки проверяются и запускаются с эмулятора, а Идовские бряки очень сложные, да |
| DrMefistO:
Делать их в эмуле очень дорого в плане скорости работы. |
| Turbo2000:
--- Цитата: DrMefistO от 16 Декабрь 2023, 20:27:50 ---Делать их в эмуле очень дорого в плане скорости работы. --- Конец цитаты --- Ну они вроде как компилятся в выражения, попробую, поделюсь результатами, пока смотрю на деббаг сборке, она нереально медленная, да :) Добавлено позже: Ну главное, что репликация условия не срабатывает постоянно Я просто ковырялся в плагине и эмуляторе, и пришел к выводу, что бряки сейчас все равно инициируются со стороны эмулятора |
| Turbo2000:
Сделал небольшой пруф: https://github.com/lab313ru/smd_ida_tools2/commit/cc4c450faee973177c0db395e03739b875a2a0fc Добавлено позже: В целом, можно различной сложности делать условия, надо дописать все регистры, размерности, функции для работы с адресами и другие полезные вещи |
| DrMefistO:
Огонь) Спасибо! Что по скорости? |
| Turbo2000:
Пока не пробовал на shipping сборке, попробую сегодня вечером или завтра Могу добавить трассировку по времени исполнения, если условия есть Там пока немного кривой код, думаю от атомика на указатель откажусь, но можно случайно поймать утечку, в общем, надо над дизайном компиляции условий подумать |
| Turbo2000:
Работает хорошо :) https://github.com/lab313ru/smd_ida_tools2/commit/714b541e0fbfeaf5076444c47f4ef6bb2e079463 |
| Turbo2000:
Бинари Добавлено позже: Длл немного толстая, не убрал от туда SDL |
| Turbo2000:
Есть возможность как-то это окно держать открытым? Нужно иследовать везде где идет запись в контроллер VDP, может есть альтернатива? Добавлено позже: Добавил action который вызывает open_xrefs_window, помогло Добавлено позже: А динамически можно посмотреть, что пишется в VDP_CTRL? Чтобы постоянно справку не смотреть, еще не все изучил :neznayu: |
| DrMefistO:
--- Цитата: Turbo2000 от 03 Январь 2024, 21:57:27 ---Есть возможность как-то это окно держать открытым? (Ссылка на вложение) Нужно иследовать везде где идет запись в контроллер VDP, может есть альтернатива? Добавлено позже: Добавил action который вызывает open_xrefs_window, помогло Добавлено позже: А динамически можно посмотреть, что пишется в VDP_CTRL? Чтобы постоянно справку не смотреть, еще не все изучил :neznayu: --- Конец цитаты --- Нажать J на команде. Добавлено позже: Саму реализацию пощупаю позже:) Если надо, дам доступ к гиту в качестве контрибутора. |
| Turbo2000:
--- Цитата: DrMefistO от 11 Январь 2024, 13:01:34 ---Нажать J на команде. --- Конец цитаты --- О, понял, спасибо, думал работает только статически Добавлено позже: --- Цитата: DrMefistO от 11 Январь 2024, 13:01:34 ---Саму реализацию пощупаю позже:) Если надо, дам доступ к гиту в качестве контрибутора. --- Конец цитаты --- Пока не надо, там много мусора (дополнительное окно), можно черипикнуть все что касается брейкпоинтов Добавлено позже: Как займусь, перенесу в отдельную ветку |
| DrMefistO:
Но если значение уже в регистре, то понятно J не сработает. Ещё J работает командах с SR регистром. Добавлено позже: А ещё - с z80. |
| Turbo2000:
--- Цитата: DrMefistO от 11 Январь 2024, 13:30:30 ---Но если значение уже в регистре, то понятно J не сработает. Ещё J работает командах с SR регистром. Добавлено позже: А ещё - с z80. --- Конец цитаты --- О, даже со стейт регистром, отлично Спасибо большое |
| DrMefistO:
А ещё - с z80: это я имел в виду Z80 BUS запросы из моторолы. |
| Turbo2000:
--- Цитата: DrMefistO от 11 Январь 2024, 14:25:22 ---А ещё - с z80: это я имел в виду Z80 BUS запросы из моторолы. --- Конец цитаты --- Спасибо, исследовать как там работает z80 сам по себе, еще один огромный пласт |
| nikobonus:
DrMefistO, Подскажи пожалуйста, по какой причине может не работать создание ассемблерного листинга? Есть полностью разобранный ром, выбираю File->Produce file->Create LST file, после чего действительно создается файл. Но в нем вначале есть вложения: --- Цитата ---include "src/ports.inc" include "src/equals.inc" include "src/ram_addrs.inc" --- Конец цитаты --- Этих файлов нигде нет и папки src тоже. Я там еще насоздавал структур и енумов, кое-где использую не полностью структуры, а отдельные поля. Может в этом дело? |
| DrMefistO:
--- Цитата: nikobonus от 07 Февраль 2024, 18:23:01 ---DrMefistO, Подскажи пожалуйста, по какой причине может не работать создание ассемблерного листинга? Есть полностью разобранный ром, выбираю File->Produce file->Create LST file, после чего действительно создается файл. Но в нем вначале есть вложения: Этих файлов нигде нет и папки src тоже. Я там еще насоздавал структур и енумов, кое-где использую не полностью структуры, а отдельные поля. Может в этом дело? --- Конец цитаты --- Можешь скинуть в личку idb, я проверю. Либо поищи сам ещё либо в каталоге с ромом, либо в каталоге с листингом. Добавлено позже: Пофиксил билд для 7.7. Просьба перекачать. |
| SeregaZ:
похоже эти строки можно закомментить. но опять таки старая проблема вылезла: --- Код: ---lea ($FFF152).w,a0 --- Конец кода --- не хватает FF спереди: $FFF152 => $FFFFF152 мде... а дальше все посыпалось при сборке :) видимо нельзя их комментить :) как раз видимо описание этих переменных при экспорте надо было галкой помечать ASM68K Assembler? то есть это как раз совместимый с ASM68K.exe который потом и собирает ром? а то может я не тот пункт выбираю и поэтому дело швах... Добавлено позже: ахахахаха кнопка отмены не работает в диалоге создания файла :) жму отмена - а Ида все равно ныкается создавать файл :)))) |
| DrMefistO:
--- Цитата: SeregaZ от 07 Февраль 2024, 19:31:18 ---похоже эти строки можно закомментить. но опять таки старая проблема вылезла: --- Код: ---lea ($FFF152).w,a0 --- Конец кода --- не хватает FF спереди: $FFF152 => $FFFFF152 мде... а дальше все посыпалось при сборке :) видимо нельзя их комментить :) как раз видимо описание этих переменных при экспорте надо было галкой помечать ASM68K Assembler? то есть это как раз совместимый с ASM68K.exe который потом и собирает ром? а то может я не тот пункт выбираю и поэтому дело швах... Добавлено позже: ахахахаха кнопка отмены не работает в диалоге создания файла :) жму отмена - а Ида все равно ныкается создавать файл :)))) --- Конец цитаты --- У тебя какой-то адрес странный, нужно либо две F, либо четыре. При сборке точно всё посыпется, т.к. с первого раза собрать нереально, не зная особенностей:) Например, у тебя все ram адрес должны быть помечены как данные, т.е. никаких unk_FFFF |
| SeregaZ:
и экспорт не в LST, а в ASM ваще не происходит. один файл с этими инклудами, а рядышком ничего. так-же папку src создавал. хм. надо видимо папку src создать в виндовс темп и в моих документах. или там или там наверное содержимое появится. и кстати! а для чего папка script? уж не регистрация ли это каких нужно путей в системе чтобы ида все правильно делала? |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |