Разработка и ромхакинг > Ромхакинг
Smd IDA Tools - Sega Mega Drive reversing helpers
<< < (8/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 от 06 Июль 2023, 14:36:21 ---Проверил: выключена. Можно будет включить.

--- Конец цитаты ---
О, отлично, а почему отключали, плохо работает?
DrMefistO:
Не помню, но скорее просто при переходе на какую-то другую основу кодовой базы
Turbo2000:
Для компиляции достаточно idasdk77 и grpc?
DrMefistO:
Да, делай по инструкции в ридми на гитхабе
Turbo2000:

--- Цитата: DrMefistO от 06 Июль 2023, 14:54:04 ---Да, делай по инструкции в ридми на гитхабе

--- Конец цитаты ---
Да, компилируется. Добавил системную переменную для IDA SDK.
Кстати, в новую студию добавили интегрированную vcpkg. Правда для CMake проектов надо писать манифест зависимостей, но в целом это даже лучше, там можно указывать точную версию vcpkg (через номер коммита) + нужные версии библиотек, и они наконец-то перешли на 64-й триплет.

Добавлено позже:
Оказалось, что и для любых других проектов с поддержкой vcpkg все равно надо писать манифест, либо ставить отдельный vcpkg, там можно вручную ставить пакеты.
Turbo2000:
Всё, победа!
Могу сделать пул рекверс.

Добавлено позже:
https://github.com/lab313ru/smd_ida_tools2/pull/7

Но там спорные моменты, можно просто вернуть обновления стека вызовов
DrMefistO:
Замержил, спасибо) А в чём спорность?
Turbo2000:

--- Цитата: DrMefistO от 06 Июль 2023, 16:45:47 ---Замержил, спасибо) А в чём спорность?

--- Конец цитаты ---
Если надо будет использовать старый, как говорят майки "классический режим", надо будет немного настроить, но вроде, если не устанавливать новый vcpkg, все должно заработать.

Добавил зависимости только для Gensida, для Gens не добавлял, по идее манифест надо вынести на верхний уровень.

И поменял описание)

Добавлено позже:
Спасибо за такой отличный инструмент, мог о таком только мечтать  ^_^

А как с дополнением для Гидры, там есть что улучшать для декомпиляции? Пробовал читать листинг, сложно, хотя до этого переносил небольшие библиотеки на x86.

Добавлено позже:
Сеговский листинг проще всего читать сразу на ассемблере, но пока еще не научился распознавать структуры.
DrMefistO:

--- Цитата: Turbo2000 от 06 Июль 2023, 16:53:06 ---Если надо будет использовать старый, как говорят майки "классический режим", надо будет немного настроить, но вроде, если не устанавливать новый vcpkg, все должно заработать.

Добавил зависимости только для Gensida, для Gens не добавлял, по идее манифест надо вынести на верхний уровень.

И поменял описание)

Добавлено позже:
Спасибо за такой отличный инструмент, мог о таком только мечтать  ^_^

А как с дополнением для Гидры, там есть что улучшать для декомпиляции? Пробовал читать листинг, сложно, хотя до этого переносил небольшие библиотеки на x86.

Добавлено позже:
Сеговский листинг проще всего читать сразу на ассемблере, но пока еще не научился распознавать структуры.

--- Конец цитаты ---
Спасибо:) Для гидры есть конечно что улучшать, но да, как ты сказал, читать проще сразу азм. Структуры распознавать не так и сложно:) У меня в видосах я их частенько разбирал.
Turbo2000:
Еще немного оффтопа:
Прекрасно, как разберусь, может смогу что предложить по улучшению, сам только недавно начал, хотя бы ребята помогли с прерываниями.
Постоянно ищу какую-то сербрянную пулю, которая поможет все свои любимые игры изучить, но такого нет  :lol:
DrMefistO:

--- Цитата: Turbo2000 от 06 Июль 2023, 17:08:20 ---Еще немного оффтопа:
Прекрасно, как разберусь, может смогу что предложить по улучшению, сам только недавно начал, хотя бы ребята помогли с прерываниями.
Постоянно ищу какую-то сербрянную пулю, которая поможет все свои любимые игры изучить, но такого нет  :lol:

--- Конец цитаты ---
Конечно, предлагай.
Беларус учит русский:

--- Цитата: Turbo2000 от 06 Июль 2023, 17:08:20 ---Постоянно ищу какую-то сербрянную пулю, которая поможет все свои любимые игры изучить, но такого нет
--- Конец цитаты ---
А самому не хочется такую "пулю" сделать? Я вот не выдержал и делаю :)
DrMefistO:

--- Цитата: perfect_genius от 06 Июль 2023, 22:41:00 ---А самому не хочется такую "пулю" сделать? Я вот не выдержал и делаю :)

--- Конец цитаты ---
И что это?)
Беларус учит русский:
Просто альтернатива Иде, x64dbg и Cheat Engine, только с интерфейсом для людей. Хочу не только изучать внутренности игр, но и делать моды, а для этого нужны всякие удобства.
DrMefistO:

--- Цитата: perfect_genius от 06 Июль 2023, 23:45:38 ---Просто альтернатива Иде, x64dbg и Cheat Engine, только с интерфейсом для людей. Хочу не только изучать внутренности игр, но и делать моды, а для этого нужны всякие удобства.

--- Конец цитаты ---
Звучит солидно) и как успехи?)
Беларус учит русский:
Медленно, но движется. Ушёл год, чтобы Capstone стабильно дизассемблировал весь доступный для прохода ему код - пока только m68k и x86. Потом понадобилось визуализировать в граф всё это, тоже ушёл примерно год.
Проблема в том, что я по жизни радикал, и когда мне окончательно что-то надоедает, то я принимаю радикальное решение. В данном случае мне надоели всякие возникающие баги при разработке, да и унизительная "printf-отладка", и я взялся за свой язык программирования в прошлом году :lol:
В идеале, чтобы можно было программировать только мышкой.
И вот только недавно, пару месяцев назад мой этот "язык" смог нарисовать линии на экране. Главной, самой важной вещью среды разработки я считаю возможность пошагового хода не только вперёд как обычно, но и назад. Мало какая среда такое имеет, что крайне странно.
Т.е. возникает баг и тебе надо становиться детективом, чтобы выяснить "убийцу". Прыгать туда-сюда по коду в надежде приблизиться в разгадке и всё понять.
А в случае перемотки назад ты ловишь значение в ячейке, которого не должно быть, и не перезапускаешь всё заново, чтобы мотать вперёд до этого момента и с определёнными условиями, а просто делаешь шаг или два назад и сразу видишь виновника.
Этого очень не хватало при разработке дизассемблера в Visual Studio и при реверсе игр Сеги в Иде, когда что-то меняешь в роме и надо проследить всё ли идёт как надо. Да много чего там не хватало.
В итоге вот этими линиями начну теперь рисовать граф.
А для дизассемблера появились свои побочные идеи. Немного дописал, чтобы при проходе по рому находил драйвер геймпада. Зачем? Например, чтобы переназначать кнопки. Или чтобы вставляла в ром запись прохождения. Зачем? Например, для верификации на реальном железе :) (я фанат TAS-прохождений)
А ещё такой проход даёт возможность сделать более умный корраптор, который меняет инструкции переходов на противоположные - такого ведь ещё не было?
Короче, работы и идей море, лишь бы хватило жизни всё это реализовать ^_^
Стараюсь посматривать за развитием Иды, и кажется, что он уже давно особо сильно не развивается интерфейсно. Т.е. порог входа всё такой же сложный. Сколько лет у него не было Ctrl+Z... Гидра недалеко от него ушла.
Turbo2000:

--- Цитата: perfect_genius от 06 Июль 2023, 22:41:00 ---А самому не хочется такую "пулю" сделать? Я вот не выдержал и делаю :)

--- Конец цитаты ---
Мне пока что все нравится, пока что научился графику извлекать из Дюны, но вот геймплейные фичи еще не научился находить, файл очень большой, не смотря, на то что мегабайт

Добавлено позже:
В идеале бы все это получать в удобоваримый псевдо код, но сколько раз пробовал, несмотря на избыточность, ассемблер читать проще.

Добавлено позже:
Мне больше всего интересно попробовать перенести игры на современные платформы

Добавлено позже:

--- Цитата: perfect_genius от 07 Июль 2023, 02:04:32 ---Медленно, но движется. Ушёл год, чтобы Capstone стабильно дизассемблировал весь доступный для прохода ему код - пока только m68k и x86. Потом понадобилось визуализировать в граф всё это, тоже ушёл примерно год.

--- Конец цитаты ---
А есть что показать?  :)
Беларус учит русский:

--- Цитата: Turbo2000 от 13 Июль 2023, 14:17:56 ---файл очень большой, не смотря, на то что мегабайт
--- Конец цитаты ---
Мегабайт кода для реверса - это довольно много. Но в случае ромов там внутри больше всяких данных типа графики и звука.


--- Цитата: Turbo2000 от 13 Июль 2023, 14:17:56 ---интересно попробовать перенести игры на современные платформы
--- Конец цитаты ---
Я тоже вот хочу перенести UMK3, чтобы без лагов играть по сети.


--- Цитата: Turbo2000 от 13 Июль 2023, 14:17:56 ---А есть что показать? 
--- Конец цитаты ---
Есть, но не могу. Всё суперсекретно пока, потому что планирую на своём инструменте зарабатывать. Если не выйдет, то выложу в сеть.
Можно представить себе граф из Иды, где все блоки не раскиданы как попало, а логично и аккуратно расположены.
А язык получается чем-то средним между ассемблером и Си с примесью С++, но стараюсь привести к уровню С++, и это всё без текстового кода - только ячейки со значениями, структуры из них и всякие стрелки :)
Turbo2000:

--- Цитата: perfect_genius от 13 Июль 2023, 20:31:52 ---Мегабайт кода для реверса - это довольно много. Но в случае ромов там внутри больше всяких данных типа графики и звука.
Я тоже вот хочу перенести UMK3, чтобы без лагов играть по сети.
Есть, но не могу. Всё суперсекретно пока, потому что планирую на своём инструменте зарабатывать. Если не выйдет, то выложу в сеть.
Можно представить себе граф из Иды, где все блоки не раскиданы как попало, а логично и аккуратно расположены.
А язык получается чем-то средним между ассемблером и Си с примесью С++, но стараюсь привести к уровню С++, и это всё без текстового кода - только ячейки со значениями, структуры из них и всякие стрелки :)

--- Конец цитаты ---
Да, нахрапом так сразу не взять.
На счет МК очень крутая идея, сам тоже много играл в детстве.

То есть собственный анализатор (на ризине хотя бы  :D)? Интересно, почему тоже самое не может ида делать, это же иструментарий с большой историей, да интерфейс устарел, но иструмент мощный

Добавлено позже:
А есть возможность где-нибудь найти примеры диззасемиблированного кода (проект под иду .idb), с анализом, чтобы посмотреть примеры?
Беларус учит русский:

--- Цитата: Turbo2000 от 16 Июль 2023, 16:59:09 ---То есть собственный анализатор (на ризине хотя бы  )?
--- Конец цитаты ---
Capstone Engine, разбирает кучу архитектур и при этом его легко подключить. Графика - SFML, но в будущем планирую перейти на SDL2.


--- Цитата: Turbo2000 от 16 Июль 2023, 16:59:09 ---почему тоже самое не может ида делать
--- Конец цитаты ---
Потому что Ида предназначена для реверса всяких вирусов и зловредов, т.е. небольших программ. Для разбора больших программ она и ему подобные не предназначены и неудобны. Для неё граф - это лишь дополнительная опция, а не основа. Но в плане выискивания как можно больше кода в бинарнике она имеет большой опыт, да (при статическом анализе доступен не весь код). Надо будет его догонять в этом. Скорее всего, придётся реверсить саму Иду :lol:


--- Цитата: Turbo2000 от 16 Июль 2023, 16:59:09 --- примеры диззасемиблированного кода (проект под иду .idb)
--- Конец цитаты ---
Автор темы разобрал Дональд Дака сеговского. Также у Ti_ что-то есть на Яндекс Диске: disk.yandex.ru/d/vX90gsyR3ML6rk/disasm
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии