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
    Сообщения:
    706
    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. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, ну я открыл проект
    ida dosbox\dosbox-master\visualc_net\dosbox.vcproj

    и просто скомпилировал его, получился обычный досбокс.
    Ааааа текущие правки под студию, ща скачаю тогда.
    Понел))
    Нет не понял.
    https://github.com/wjp/dosbox
    вот здесь все файлы старые.

    Скачал всё заново,
    1>------ Построение начато: проект: dosbox, Конфигурация: Debug Win32 ------
    1>dosbox.obj : warning LNK4075: не учитывается "/EDITANDCONTINUE" из-за спецификации "/OPT:LBR"
    1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: библиотека по умолчанию "msvcrt.lib" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
    1>dosbox.obj : error LNK2019: ссылка на неразрешенный внешний символ "bool __cdecl DEBUG_RemoteDataReady(void)" (?DEBUG_RemoteDataReady@@YA_NXZ) в функции "unsigned int __cdecl Normal_Loop(void)" (?Normal_Loop@@YAIXZ)
    1>dos_execute.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl DEBUG_AppTerminated(void)" (?DEBUG_AppTerminated@@YAXXZ) в функции "void __cdecl DOS_Terminate(unsigned short,bool,unsigned char)" (?DOS_Terminate@@YAXG_NE@Z)
    1>.\Debug/dosbox.exe : fatal error LNK1120: неразрешенных внешних элементов: 2
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
     
    Последнее редактирование: 23 апр 2013
  4. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    jack7277, точно версия последняя? у меня так было с предыдущей. Последние правки в проект 2010 вносились 10 часов назад.
    Не забудь сам плагин обновить и пути правильно выставить. В плагине два файла тоже обновились.
     
  5. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Минутка юмора при компиляции:
    "ожидается, что функция не будет выдавать исключения, но она это делает"

    Где пути поправить не найду, выдает
    1> dosbox_debmod.cpp
    1>c1xx : fatal error C1083: Не удается открыть файл источник: ..\..\idados\dosbox_debmod.cpp: No such file or directory

    ага нашел в dosbox.vcxproj

    Теперь хочет кучу .h файлов, указал их в каталоге cygwin выдал километровую простыню ошибок.
    Просит _ansi.h, machine/ieeefp.h

    блин я не то качал, вот версия которую недавно поправили под vs2010
    https://github.com/wjp/dosbox/tree/idados
     
    Последнее редактирование: 23 апр 2013
  6. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    У тебя не стоит ссылка на плагин. dosbox-idados использует кроме разных SDL и прочего еще исходники SDK и самого плагина idados.
    Прописать можно в путях - посмотри свойства проекта. Сейчас там стоит диск D:\ с различными путями.
     
  7. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Я поправил пути в свойствах проекта. Называется каталоги включения и каталоги библиотек.

    Скомпилирован, пишет:
    Запуск программы невозможен, так как на компьютере отсутствует IDA.WLL. Попробуйте переустановить программу.
    Этот файл нужен из IDA 6.4, так как подставил я его из 6.1 и он ругнулся нет такой библиотеки, что ты просишь.

    В предыдущей версии он был по пути
    d:\IDA Pro Advanced 6.1 RDW\Hex-Rays.IDA.Pro.Advanced.v6.1.Windows.incl.Hex-Rays.x86.Decompiler.v1.5.READ.NFO-RDW\ida61-hexrays15-rdw.rar\ida61\ida.wll
     
    Последнее редактирование: 23 апр 2013
  8. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    А, точно. Вот почему он ругается на 59 функцию... Ида не та...
     
  9. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, в том и печаль. Ждем слива 6.4
     
  10. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Ну опять же, можно откатиться к временам работы в 6.1. Завтра попробую, может что выйдет.
     
  11. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, пиши сюда все и подробно.
    Товарищ redlord с краклаба собрал плагин для 6.1, ждем его здесь с бинарниками.
    Плюс подтянулся gloomdemon и все выложил.

    Вот оно, вот он пост моей мечты
    http://exelab.ru/f/index.php?action=vthread&forum=5&topic=21406&page=0#20

    зы: облом в итоге, но какие открываются перспективы аж дух захватывает.
    Ура.
    Там же выложена сборка для ида 6.1 , возможно не работает звук.
    Ждем теперь слив 6.4. ))
     
    Последнее редактирование: 23 апр 2013
  12. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Шикарно. Кстати, я попробовал взять ida.wll от 6.4 демо, ошибка вылезла та же, очевидно, что причина не в ней. Хотя, может в демоверсии wll куцая.
    Буду пробовать. Действительно, фантастика, не радовался так со времен выхода IDADOS 0.1.

    ---------- Сообщение добавлено в 07:33 ---------- Предыдущее сообщение размещено в 06:44 ----------

    Что я могу сказать... прекрасно работает. Подвисаний не замечаю, звук есть. Спасибо огромное за помощь. Надеюсь, это будет большим подспорьем в деле переводов и модификаций старых игр.

    ---------- Сообщение добавлено в 07:45 ---------- Предыдущее сообщение размещено в 07:33 ----------

    Заметил огромный плюс - в оригинале ида в 16битных приложениях криво работает с адресами, вплоть до того, что в функцию вывода строки выдается адрес не ее начала, а 2-3 символ. Плагин правит адресацию при открытии файла, это раз, и во время дебага сама ида поправляет свои косяки, это два. Приятно.
     
  13. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.372
    Запускать нужно сначала Ida или DosBox?
     
  14. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, меня больше волнует 32 битный дос дпми режим, когда программа запускается в досе как 16 битное приложение, потом переключается в 32 бита.
    Противостояние так работает.

    Gamerun,
    gloomdemon пишет:
    "Отлаживаться так: в ida выбирается remote dosbox debugger и в debugger->process options устанавливается hostname на текущий комп, а в dosbox запускается прога, к примеру debug prince.exe и в ida жмакаем start."

    Буду пробовать.
     
    Последнее редактирование: 24 апр 2013
  15. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Дебаг-сервер в досбоксе запукать надо первым: debug xxx.exe
    Затем только выбирать Dosbox Debugger в иде, обязательно в параметрах Hostname выставить localhost (ну или удаленную машину, если есть желание), затем можно кликать на пуск.
    Первый раз рекомендую прогнать игру по всем возможным местам, это позволит иде верно пересчитать адреса. По крайней мере у меня так вышло, там где я смог дотянуться - адреса строк выправились, где не смог - остались прежними, косячными.
     
  16. jack7277

    jack7277

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

    Не получается противостояние прицепить, там сперва запускается start.exe, который потом запускает \data\ADDPLR.DAW как 32 битное приложение. Грусть!
     

    Вложения:

    • idados61.7z
      Размер файла:
      4,4 МБ
      Просмотров:
      103
    Последнее редактирование: 24 апр 2013
    Quester и SAS нравится это.
  17. SAS io.sys

    SAS

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

    Регистрация:
    8 июл 2003
    Сообщения:
    19.653
    извр. :) Сейчас увеличу максимальный размер файла для 7zip-вложений.

    Заодно и вложение переделал.
     
    compart, A.P.$lasH, Bato-San и ещё 1-му нравится это.
  18. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Пара дурацких вопросов.
    1. Чем отличается idag.exe от idaq.exe ? Кто какой использует?
    2. В списке отладчиков в ida есть "no debugger", "local Bochs debugger" и "Remote GDB Debugger", что ни выберу, ничего не работает.
     
  19. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Интерфейсом.
    https://www.hex-rays.com/products/ida/6.0/
     
  20. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    local Bochs debugger - отладчик через виртуальную машину Bochs. Настраивается довольно просто. Но нужно устанавливать Bochs и настраивать.
    Remote GDB Debugger - опенсорсный отладчик, древний как мамонты. Насколько я понимаю, развивается в рамках GNU.
     
  21. gloomdemon

    gloomdemon

    Регистрация:
    17 ноя 2006
    Сообщения:
    4
    Значит ida не видит плагин, dosbox_stub.plw скопировали в plugins в ida?

    Посмотри по какому адресу грузит start.exe ADDPLR.DAW. Открой в ide ADDPLR.DAW, сделай rebase на нужный адрес и ставь там брекпоинты. Запускать через debug start.exe. Правда там могут быть проблемы, с адресами брейкпоинтов в 32х битах, или плагин с идой может переклинить, надо проверять.
     
  22. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, я чето затупил вообще.
    В ida выбирается remote dosbox debugger, найти не могу, как их связать.
    @ стыд.

    gloomdemon, всё понял, слоупок я. Я просто всегда через idag.exe смотрел, а он плагин не цепляет, в idaq.exe всё нормально remote dosbox debugger в списке отладчиков появился. (опять слоу, зависит от типа приложения, плагин подгружается только для MS-DOS файлов, всякие 32-битные LE и др. плагин с ними не работал)

    Попробую на dos4gw приложении поиграть, как в противостоянии, но чтоб 1 запускающий файл был, нашел Settlers2 gold.

    Появился список отладчиков в ida и при следующем запуске снова пропал, что за ерунда)
     
    Последнее редактирование: 25 апр 2013
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление