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,
    Написал бы что пробовал делать, чтоб другим по граблям не ходить.
     
  4. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Пропатченный для работы с плагином DosBox скомпилировался под Visual Studio 2012, прикрепляю набор либов, чтобы заново весь квест не проходить компиля каждый модуль (sdl, zlib и тд)
    Либы положить в каталог \dosbox-master\visualc_net, скомпиленый файл будет здесь же в каталоге debug.
    Если ничего не напутал конечно же.

    Ругань компиляции не вдумывался:
    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.vcxproj -> D:\___1111\ida dosbox\dosbox-master\visualc_net\.\Debug\dosbox.exe
    ========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

    Сам скомпиленный файл dosbox.exe

    какие-то .hpp файлы нужны.
    понял.
    это файлы из ida sdk.
     

    Вложения:

    • libs.7z
      Размер файла:
      34,8 КБ
      Просмотров:
      140
    • dosbox.7z
      Размер файла:
      656,3 КБ
      Просмотров:
      138
    Последнее редактирование модератором: 18 апр 2013
    AndyFox, kreol, Dimouse и ещё 1-му нравится это.
  5. Gamerun

    Gamerun

    Хелпер

    Регистрация:
    13 июн 2010
    Сообщения:
    8.368
    Как понимаю, нужны скомпиленные dll, а не те, что можно найти в сети?
     
  6. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Видимо да, не проверил )
     
  7. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    До завтра.
     

    Вложения:

    • sdl.7z
      Размер файла:
      106,5 КБ
      Просмотров:
      126
    SAS, Quester и Gamerun нравится это.
  8. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Под VC2012 у меня, к сожалению, билд не вышел, в процессе линковки навалилось ошибок о не правильных точках входа в функции.
    Под MinGW основная проблема - дублирование объявлений в IDA SDK и в самом MinGW. Как обойти это, не представляю.
    Я так понимаю, досбокс билдился без ключа, определяющий его как Doxbox IDA?
     
  9. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, со второго предложения я потерял твою мысль, пжлста расшифруй. Что за объявления?
     
    Последнее редактирование: 18 апр 2013
  10. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Часть готовых бинарников взял отсюда
    http://gnuwin32.sourceforge.net/packages.html
    справа есть setup там dll
    вот работающий пропатченный для работы с плагином DosBox: https://github.com/wjp/dosbox

    Теперь попытка собрать idados.
    А вот с ним всё вообще плохо.
    Не компилится, ругается на файл из IDA SDK - pro.h
     
    Последнее редактирование: 19 апр 2013
    Gamerun нравится это.
  11. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    jack7277, при попытке откомпилировать плагин в MinGW вываливается ошибка, что функция объявлена в двух хедерах одновременно. Один хедер находится в IDA SDK, другой в include, который идет с MinGW.
    А насчет idados-dosbox, кроме того, что это отдельная ветка от dosbox, там еще нужно в параметрах указывать ключ, который определяет, что билдятся участки кода для связки с IDA. Если я правильно понял. По крайней мере в описании make файлов так.
     
  12. jack7277

    jack7277

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

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    С авторами я общался, они сидят на IRC. Люди вроде отзывчивые (это еще по Exult я могу сказать), но как-то помощи я от них не добился.
     
  14. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, а как ты компилировал? Я скачал minigw под винду, прописал в path путь, в каталоге с isados попробовал
    gcc.exe *.cpp
     
  15. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    А насчет самого dosbox, я так понял надо собрать версию с debug.
    Там есть просто дебаг и тяжелый дебаг, второй видимо еще подробнее. В .h файле прописал heavy debug и скомпилировал. Нигде не нашел почему нужно брать именно эту версию, в svn daum уже есть дебаг версия. короче загадка.
     

    Вложения:

    • dosbox_debug.7z
      Размер файла:
      948,4 КБ
      Просмотров:
      123
    Последнее редактирование: 19 апр 2013
  16. jack7277

    jack7277

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

    Сперва под линуксом собирается плагин // To build the plugin for Linux:

    export IDA=/path/to/idasdk64/ // Непонятная команда, что за экспорт
    export __LINUX__=1 // Непонятная команда аналог на батнике похоже set __LINUX__=1
    perl $IDA/bin/idamake.pl // запускаем perl и указываем путь до файла idamake.pl

    Собираем dosbox // To build dosbox on a 32-bit system:

    ./autogen.sh // запускаем на исполнение скрипт
    ./configure --enable-debug=ida32 --with-ida-sdk=$IDA --with-ida-plugin=/path/to/idaplugin
    // вот тут в командной строке указывается что дебаг под ида32, путь до ида плагинов

    Как сделать аналогию под виндой не знаю.
     
  17. Quester

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Под mingw есть makefile, причем сам mingw уже определяет __NT__.
    Если makefile'а нет, в случае досбокса его можно сгенерировать как раз раз вот этим:
    ./autogen.sh
    ./configure --enable-debug=ida32 --with-ida-sdk=$IDA --with-ida-plugin=/path/to/idaplugin

    ---------- Сообщение добавлено в 19:01 ---------- Предыдущее сообщение размещено в 19:00 ----------

    Если указано в опциях, что включен дебаг, нужно добавить еще curses. В ветке ida-dosbox, как я понял, именно идовский дебаг, а не тот, который в досбоксе по-умолчанию.
     
  18. jack7277

    jack7277

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

    Quester

    Legacy

    Регистрация:
    25 сен 2003
    Сообщения:
    706
    Вот такой лог выдает mingw при попытке сбилдить плагин:
    Код:
    $ make
    g++ -c -D__NT__ -D__IDP__ -I/home/Quester/idasdk61/include -I/home/Quester/idasd
    k61/plugins/debugger -DNO_OBSOLETE_FUNCS -D__IDP__ -D__PLUGIN__ -mrtd -o tcpip.o
      /home/Quester/idasdk61/plugins/debugger/tcpip.cpp
    In file included from C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/t
    cpip.h:13:0,
                     from C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/t
    cpip.cpp:12:
    C:/MinGW/msys/1.0/home/Quester/idasdk61/include/pro.h:160:0: предупреждение: <PA
    CKED> переопределён [по умолчанию включена]
    c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/windef.h:71:0: замечан
    ие: это расположение предыдущего определения
    In file included from C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/t
    cpip.h:13:0,
                     from C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/t
    cpip.cpp:12:
    C:/MinGW/msys/1.0/home/Quester/idasdk61/include/pro.h:531:84: ошибка: declaratio
    n of C function <int memicmp(const void*, const void*, size_t)> conflicts with
    c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/string.h:91:37: ошибка
    : previous declaration <int memicmp(const void*, const void*, size_t)> here
    C:/MinGW/msys/1.0/home/Quester/idasdk61/include/pro.h:537:51: ошибка: declaratio
    n of C function <char* strlwr(char*)> conflicts with
    c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/string.h:102:39: ошибк
    а: previous declaration <char* strlwr(char*)> here
    C:/MinGW/msys/1.0/home/Quester/idasdk61/include/pro.h:538:51: ошибка: declaratio
    n of C function <char* strupr(char*)> conflicts with
    c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/string.h:113:39: ошибк
    а: previous declaration <char* strupr(char*)> here
    C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/tcpip.cpp: В функции <b
    ool init_irs_layer()>:
    C:/MinGW/msys/1.0/home/Quester/idasdk61/plugins/debugger/tcpip.cpp:45:22: ошибка
    : некорректное преобразование из <void (*)()> в <void (*)()> [-fpermissive]
    c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/stdlib.h:363:29: ошибк
    а:   при инициализации 1 -го аргумента <int atexit(void (*)())> [-fpermissive]
    make: *** [tcpip.o] Error 1
     
  20. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Quester, нужно заклинание - вызов программиста 80 уровня.

    А почему мы начали с minigw, если есть cygwin ?
     
    Последнее редактирование: 20 апр 2013
  21. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    на краклабе посоветовали http://nuwen.net/mingw.html

    ---------- Сообщение добавлено в 11:52 ---------- Предыдущее сообщение размещено в 10:37 ----------

    Блин, мне так стыдно за мои первые сообщения, поторопился не разобрался.

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