Тк память у меня дырявая, просто сохраню это здесь =)
[0x00] Intro
Иногда хочется, чтобы удобство отображения данных в Иде и данные, которые
удалось собрать при статическом анализе, отображались при динамическом
анализе. Частично задача решается через генерацию map файлов и подгрузку
их в олли. Но всегда есть стойкое желание обладать мощью иды в отображении
дизасма и при отладке, чтобы переносить данные полученные динамически в
базу. С этим вполне справляется встроенный отладчик, который, после
некоторого привыкания и гугления плагинов ничуть не уступает олли. С
другой стороны при отладке вредоносного кода придется переносить иду на
виртуалку и както синхронизировать базы, что неудобно. Такая же проблема
возникает и при отладке багов софта, тк постоянно требуется ставить разные
версии и на хостовой машине не разгуляешся.
Для этих целей существует удаленная отладка. Вообще этот механизм
присутствует почти в любом отладчике, с более или менее мощной
автоматизацией процесса (windbg, msvc, плагин vmware для студии).
[0x01] Arch
Общий механизм работы следующий:
1) На удаленной машине запускает сервер отладки, который слушает некоторый
порт на сетевом интерфейсе. Он реализует основной отладочный движок, в
большинстве случаев через DebugApi. Этот движок управляется командами от
клиента, которые передаются по сети. Есть несколько форматов, но они не
являются предметов этой заметки.
2) На хосте поднимается клиент, но реализует гуй и управляет по сети
сервером. Плагины в большинстве случаев работают тоже на клиенте и их
запросы прозрачно ретранслируются серверу.
Таким образом видно, что при задании свойств отладки на клиенте, все пути
надо прописывать актуальные на удаленной машине (если конечно в
документации несказано обратное).
[0x02] IDA Remote Debugging
Функциональность сервера отладки иды реальзует win32_remote.exe (x86). Он
находится в корневой папке иды. Там же можно найти и сервера для других
таргет платформ, но там все аналогично.
Этот файл нужно перенести на удаленную машины (виртуалку к примеру). Эта
машина должна быть доступна по сети с хоста. Необходимо также отключить фаер или
добавить сервер в исключения. При запуске сервера он выведет ip:port для
подключения (эти данные нужно запомнить). Также можно запустить сервер с
опцией -P и указать пароль для подключения.
C:\_work>win32_remote.exe
IDA Windows 32-bit remote debug server(MT) v1.12. Copyright HexRays 2004-2010
Host ph0-0aea1f70 (192.168.2.1): Listening on port #23946...
Далее необходимо настроить клиент.
Можно отлаживать как exe так и dll удаленно. Предположим, что мы долго и
упорно изучали статически некотрую dll и теперь хотим посмотреть, что там
творится в динамике. Сначала нужно установить удаленный отладчик текущим -
Debugger->Switch Debugger и выбрать Remote Win32 Debugger.
Далее нужно установить пути до файлов и адрес сервера отладки. Это
делается через Debugger->Process Options
Application -> путь до exe файла, с которого создается процесс
Input File -> файл который у нас открыт сейчас в IDA (это может быть тот же самый exe, что и в Application или dll, которая подгружается в отлаживаемый процесс)
Directory -> текущая директория
Parameters -> командная строка передаваемая процессу
Hostname и port -> выводятся при запуске сервера
Password -> пароль, ктр задается в ключе -P при запуске сервера
Опять обращаю внимание, что все пути должны быть актуальны для удаленной
машины, а не для хоста. Также если даже пути содержат пробелы - кавычки не
нужны.
Также в Debbuger->Debugger Options можно задать некоторые опции, к примеру
останавливаться на точке входа образа (по умолчанию не задана).
Далее работа с отладчиком полностью аналогично локальной.
[0x00] Intro
Иногда хочется, чтобы удобство отображения данных в Иде и данные, которые
удалось собрать при статическом анализе, отображались при динамическом
анализе. Частично задача решается через генерацию map файлов и подгрузку
их в олли. Но всегда есть стойкое желание обладать мощью иды в отображении
дизасма и при отладке, чтобы переносить данные полученные динамически в
базу. С этим вполне справляется встроенный отладчик, который, после
некоторого привыкания и гугления плагинов ничуть не уступает олли. С
другой стороны при отладке вредоносного кода придется переносить иду на
виртуалку и както синхронизировать базы, что неудобно. Такая же проблема
возникает и при отладке багов софта, тк постоянно требуется ставить разные
версии и на хостовой машине не разгуляешся.
Для этих целей существует удаленная отладка. Вообще этот механизм
присутствует почти в любом отладчике, с более или менее мощной
автоматизацией процесса (windbg, msvc, плагин vmware для студии).
[0x01] Arch
Общий механизм работы следующий:
1) На удаленной машине запускает сервер отладки, который слушает некоторый
порт на сетевом интерфейсе. Он реализует основной отладочный движок, в
большинстве случаев через DebugApi. Этот движок управляется командами от
клиента, которые передаются по сети. Есть несколько форматов, но они не
являются предметов этой заметки.
2) На хосте поднимается клиент, но реализует гуй и управляет по сети
сервером. Плагины в большинстве случаев работают тоже на клиенте и их
запросы прозрачно ретранслируются серверу.
Таким образом видно, что при задании свойств отладки на клиенте, все пути
надо прописывать актуальные на удаленной машине (если конечно в
документации несказано обратное).
[0x02] IDA Remote Debugging
Функциональность сервера отладки иды реальзует win32_remote.exe (x86). Он
находится в корневой папке иды. Там же можно найти и сервера для других
таргет платформ, но там все аналогично.
Этот файл нужно перенести на удаленную машины (виртуалку к примеру). Эта
машина должна быть доступна по сети с хоста. Необходимо также отключить фаер или
добавить сервер в исключения. При запуске сервера он выведет ip:port для
подключения (эти данные нужно запомнить). Также можно запустить сервер с
опцией -P и указать пароль для подключения.
C:\_work>win32_remote.exe
IDA Windows 32-bit remote debug server(MT) v1.12. Copyright HexRays 2004-2010
Host ph0-0aea1f70 (192.168.2.1): Listening on port #23946...
Далее необходимо настроить клиент.
Можно отлаживать как exe так и dll удаленно. Предположим, что мы долго и
упорно изучали статически некотрую dll и теперь хотим посмотреть, что там
творится в динамике. Сначала нужно установить удаленный отладчик текущим -
Debugger->Switch Debugger и выбрать Remote Win32 Debugger.
Далее нужно установить пути до файлов и адрес сервера отладки. Это
делается через Debugger->Process Options
Application -> путь до exe файла, с которого создается процесс
Input File -> файл который у нас открыт сейчас в IDA (это может быть тот же самый exe, что и в Application или dll, которая подгружается в отлаживаемый процесс)
Directory -> текущая директория
Parameters -> командная строка передаваемая процессу
Hostname и port -> выводятся при запуске сервера
Password -> пароль, ктр задается в ключе -P при запуске сервера
Опять обращаю внимание, что все пути должны быть актуальны для удаленной
машины, а не для хоста. Также если даже пути содержат пробелы - кавычки не
нужны.
Также в Debbuger->Debugger Options можно задать некоторые опции, к примеру
останавливаться на точке входа образа (по умолчанию не задана).
Далее работа с отладчиком полностью аналогично локальной.