1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Реверс в DOSBox с помощью IDA

Тема в разделе "Мастерская", создана пользователем Quester, 10 апр 2013.

  1. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    IDADOS/DSBXIDA plugin
    Плагин для связки IDA Pro - Dosbox/Dosbox-X

    Ссылки на исходники
    Сам плагин: wjp/idados
    Пропатченный для работы с плагином DosBox: wjp/dosbox
    (ветка по-умолчанию должна быть idados, если нет, откройте Branches и выберете idados)

    Ссылки на бинарники
    Для версии 6.1 Посмотреть вложение idados61.7z
    Для версии 6.4 Посмотреть вложение idados64.7z

    Ссылка на сборки от DrMefistO
    "Вот свежая сборка этого инструмента (у меня поправлены прыжки по смещениям во время отладки):"
    Исходники для версии 6.х: https://github.com/lab313ru/idados_dosbox
    Релизы для версии 6.х: https://github.com/lab313ru/idados_dosbox/releases
    Релизы для версии 7.х: lab313ru/dsbxida
    Релизы для версии 7.х: Releases · lab313ru/dsbxida

    Описание
    Плагин, позволяющий в IDA Pro в качестве отладчика использовать Dosbox. Встроенный в Dosbox отладчик при этом отключается. Позволяет ставить брекпоинты, совершать трассировку. Перед первым запуском изменяет адреса на правильные (IDA Pro в 16-битных DOS приложениях зачастую эти адреса искажает).

    Использование версии 6.х
    Скопировать плагин dosbox_stub.plw в папку %IDAPro%\PLUGINS.
    Остальные файлы (Dosbox и набор dll) скопировать в установленный заранее оригинальный DosBox. Запустить пропатченный Dosbox, присоединить нужные диски. Запустить программу для отладки командой debug имяпрограммы.exe.
    В IDA Pro открыть программу для отладки, выбрать тип процессора, дождаться окончания анализа. Выбрать в качестве отладчика Dosbox, в настройках указать hostname (для локальной машины - localhost). Запустить отладку. Если необходимо, указать в настройках отладчика, что при начале отладки останавливать исполнение кода.

    Использование версии 7.х
    1. Скопировать папки PLUGINS и LOADERS в корень папки с IDA Pro.
    2. Запустить DosBox-X, через меню смонтировать диск (запуск mount автоматически переводит досбокс в режим отладки приложения mount). Перейти в папку с отлаживаемым файлом.
    3. Запустить IDA Pro, открыть проект, выбрать в качестве отладчика по-умолчанию dsbxida debugger plugin и запустить режим отладки.
    4. Запустить в Dosbox-X отлаживаемый файл.


    Напоминаю, что IDA Pro является платным продуктом и вопросы "где скачать бесплатно" неуместны.
    Желающие приобрести IDA Pro могут сделать это на сайте программы - https://www.hex-rays.com/products/ida/overview.shtml (стоимость Name лицензии порядка 500$).
    Если жалко денег, можно найти старую бесплатную версию IDA Pro и плагин IDADOS версии 0.1. Работать будет, но еще более криво.

    Благодарности
    Спасибо jack7277 за настойчивость и поднятие темы на нужных форумах.
    Огромное СПАСИБО gloomdemon за сборку бинарников для версий 6.4 и 6.1.
    Огромное спасибо DrMefistO за новые сборки бинарников.

    Ссылки на полезное
    http://blog.yurichev.com/
    Блог Дениса Юричева по дизассемблированию. Там же можно скачать постоянно пополняемую книгу по обратной разработке для начинающих (на русском и английском языках).
     
    Последнее редактирование: 25 апр 2021
    longhorn_gnu, bvedargh, BeetLight и 15 другим нравится это.
  2.  
  3. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    Все равно немного косячит. Часть начального кода пожирает, не отображая его, хотя если делать step, видно, что инструкции выполняются. По-моему, как раз org 100 и неверно высчитываются. Но это мелочи, главное, что отладка стала в разы проще.
     
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Не дает IDA выбор плагинов для Settlers2 Gold, она LE-формат, 32 бита, а в плагине только 16 бит похоже. Получается ничего из нового нельзя будет пока смотреть.
    Опять грусть.

    Трассировка 16 битного start.exe доходит до запуска 32 битного файла и дальше не пускает.
    int 21h ; DOS - 2+ - LOAD OR EXECUTE (EXEC)
    ; DS:DX -> ASCIZ filename
    ; ES:BX -> parameter block
    ; AL = subfunc: 0-exec,1-load,2-overlay,3-MSC spawn
     
    Последнее редактирование: 24 апр 2013
  5. drugon Adventure-seeker @ in the Cyber Dungeon quest!

    drugon

    Регистрация:
    6 май 2004
    Сообщения:
    14.767
    gloomdemon
    Offtop
    А ты не тот ли Глумдемон с ФКН?
     
  6. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Ну. Всё нормально. А чего ты собственно хотел то ? Дальше смотришь чего там в AL и подгружаешь ручками.
     
  7. gloomdemon

    gloomdemon

    Регистрация:
    17 ноя 2006
    Сообщения:
    4
    Не особо вижу причины для грусти, на idados мир клином не сошелся. Потому что есть еще связки bochs + ida и vmware + ida. Там все должно работать, единственное настраивать дольше и работать будет медленнее.

    Почитать можно по словам gdb stub или gdb remote server в документации на bochs или vmware. Можно посмореть на сайте иды описание как через vmware и стандартный плагин remote gdb дебажить ядро windows. Для игрушек под dos, принцип тот же самый, ничем не отличается и глюков будет меньше чем с dosbox.

    https://www.hex-rays.com/products/ida/support/tutorials/debugging_gdb_windows_vmware.pdf
    https://www.hex-rays.com/products/ida/support/tutorials/debugging_gdb_linux_vmware.pdf
    http://www.hexblog.com/?p=94
    http://bochs.sourceforge.net/doc/docbook/user/debugging-with-gdb.html
     
    Последнее редактирование: 24 апр 2013
    bvedargh, daemolisher, jack7277 и 2 другим нравится это.
  8. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    gloomdemon, сижу настраиваю bochs, читаю с хекс-рей сайта доки )
    Я думал нет их удобных отладчиков, а просто в код смотреть без отладки можно долго.
    А оказалось вот оно как.
     
    Последнее редактирование: 24 апр 2013
  9. gloomdemon

    gloomdemon

    Регистрация:
    17 ноя 2006
    Сообщения:
    4
    Лучше, наверное, vmware будет, потому как bochs тормозит, плюс надо его пересобирать с поддержкой gdb, под windows я его сразу с gdb stub не видел, сам ручками собирал.

    На vmware можно будет сразу поставить freedos с установочного cd http://www.freedos.org/download/download/fd11src.iso и там есть поддержка общих шар vmware, как mount в dosbox. Едиственная проблема с vmware, иногда она глючит (видимо от версии зависит) и если поставить больше трех - четырех брейкпоинтов, она тупо перестает вообще на все брейкпоинты реагировать =(
     
    jack7277 нравится это.
  10. SAS io.sys

    SAS

    Администратор

    Регистрация:
    8 июл 2003
    Сообщения:
    19.653
    Quester оформил шапку у этой темы. Лучи добра ему.
     
  11. gloomdemon

    gloomdemon

    Регистрация:
    17 ноя 2006
    Сообщения:
    4
    Выложи пожалуйста, куда-нибудь start.exe, \data\ADDPLR.DAW и остальные файлы, которые нужны start.exe, что бы он добрался до перехода в 32х битный режим (всю прогу не надо =) ). Попробую кое-что посмотреть в плагине.
     
    Последнее редактирование: 25 апр 2013
  12. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Последнее редактирование: 25 апр 2013
  13. abcsoft

    abcsoft

    Регистрация:
    26 май 2013
    Сообщения:
    2
    Не знаком с DOSBOX, что означают в оглавлении темы слова "Запустить пропатченный Dosbox, присоединить нужные диски".
    Так же не понятно как реагировать на ошибку
    The file can't be loaded by the debugger plugin.....
    Все делал по инструкциям, но может где-то дурака свалял...
    Еще вижу следующие сообщения в IDA:
    Could not connect to localhost: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.

    ---------- Сообщение добавлено в 23:18 ---------- Предыдущее сообщение размещено в 21:26 ----------

    Очень прошу если кому-то из профессионалов не трудно выложите подробное описание, а то уже мозги преют.
    Или на крайний случай видо
     
  14. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    В архиве с плагином лежит пропатченный для IDA Pro файлик dosbox.exe. Его и ida.plw нужно скопировать в папку с установленным DosBox и запустить. Затем подключить диск командой MOUNT (см. руководство по досбоксу), войти в папку с игрой и запустить отладку командой "debug игра.exe".
    Тогда связка досбокса и иды должна заработать.
     
  15. abcsoft

    abcsoft

    Регистрация:
    26 май 2013
    Сообщения:
    2
    Все так и сделал только ida.plw не нашел, скиньте ссылочку где достать. А вот досбокс ругался на ida.wll и я его нашел и скопировал
     
  16. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    Извиняюсь, очепятался, как раз ida.wll и нужно копировать.
     
  17. DrMefistO

    DrMefistO

    Регистрация:
    20 янв 2015
    Сообщения:
    3
    Сорри за некропостинг, но: здесь так и не было описано решение как избавиться от ошибки, связанной с:
    Типа, что она не совпадает с объявленной в string.h при компиляции из mingw.
     
    Последнее редактирование: 20 янв 2015
  18. DrMefistO

    DrMefistO

    Регистрация:
    20 янв 2015
    Сообщения:
    3
    bvedargh, jack7277, SAS и 3 другим нравится это.
  19. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    Спасибо огромное, сегодня как раз хотел написать просьбу скомпилировать. Вижу, досбокс новый там же лежит.
     
  20. DrMefistO

    DrMefistO

    Регистрация:
    20 янв 2015
    Сообщения:
    3
    @Quester, да, новый dosbox включён в архив.
     
    Quester нравится это.
  21. WaSanya

    WaSanya

    Регистрация:
    16 сен 2016
    Сообщения:
    1
    Если кому ещё надо, вот версия поддерживающая fpu(точнее поддерживающая работу с регистрами fpu).
    https://yadi.sk/d/XNPvpjn2vEtAS
     
    bvedargh, Alex Dub, Quester и 2 другим нравится это.
  22. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    714
    Спасибо, наверное, будет полезно.
    Еще я всё жду обновление экрана в досбокс от @DrMefistO.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление